打开可以看到很明显的提示,传参就是ip=,尝试传入/?ip=127.0.0.1
,有回显,说明这是命令执行注入了,先用ls看看有什么文件得到了一个f语言的回显,很明显空格会被过滤,所以我们尝试去掉空格
成功,下一步就开始考虑如何看到flag.php里面的内容,首先的问题就是如何绕过空格过滤,这里整理一下常见的空格过滤方法
$IFS
${IFS}
$IFS$1 // 1 改成 1改成 1改成加其他数字都可以
<
<>
{cat,flag.php} //用逗号实现了空格功能
%20
%09
尝试最后使用$IFS
和$IFS$1
都可以成功绕过,以此来cat一下/?ip=127.0.0.1|cat$IFSflag.php
emm看起来不太友好,看来flag关键词也被过滤了,那就先试试看index.php,使用
I
F
S
没有回显,尝试使用
IFS没有回显,尝试使用
IFS没有回显,尝试使用IFS$1,成功得到回显
现在思路清晰了,接下来就是考虑如何显示flag.php的问题了,我们可以尝试使用反引号内联执行的做法,linux下反引号里面包含的就是需要执行的系统命令,而反引号里面的系统命令会先执行,成功执行后将结果传递给调用它的命令<br />`/?ip=127.0.0.1;cat$IFS`ls
这时候查看源代码即可得到最终的flag