本题考查url编码,linux操作命令,命令联合执行
1.出题人给了我们一些小提示:用get传参输入ip就可以ping了
2.那我们输入127.0.0.1,ping一下本地,顺便试试ls命令能否读取
3.已经看到flag.php了,我们尝试读取
被过滤了,存在空格,考虑使用{}将语句包起来然后使用逗号代替空格
又被过滤了,那么使用 $IFS$1 代替空格吧
$IFS在Linux下表示为空格,$1是当前系统shell进程第一个参数,始终为空字符串,$后可以接任意数字
4.不出所料,flag也是属于要被过滤的字段
那我们只能尝试使用拼接替换来构造paylaod
用变量a来替换ag:
但是还是没有回显,那么flag到底在哪呢?我们查看一下源代码,好家伙
成功!
复盘一下,可以看看index.php,看看到底有哪几种过滤