[BMZCTF]-shell_exec
这题一进去直接显示一个页面 ,标题也直接告诉你是在执行ping命令,再看看源代码,可以看到执行指令的具体形式
不出意外这里靠的是命令执行,这里有篇大佬写的总结
这里发现;被过滤了,但是|可以
他还是会报错,这里拿去自己的虚拟机跑了一下,发现了问题所在,他根本就,,没有执行到ping
这就有点麻烦了,他先执行了我们希望执行的命令,导致没有执行ping,所以网页上会报错,这就有点难受了,这里也没有什么绕过方法
这时候才注意到后面有个2>&1,找到一篇如何理解Linux shell中的“2>&1”
2>&1是将标准出错重定向到标准输出,也是就是我们直接在ip位置传入命令是没有回显的,需要在这个位置定义一个标准输出文件,简单来说就是可以指定一个文本记录错误信息
这里再说一下上面大佬文章中写到的,反引号可以把括起来的字符当做命令执行
既然如此我们可以在自己的虚拟机上试试
看起来是可以的,拿到题目里试试
访问test.txt文件成功看到执行结果
接下来执行cat /flag,但是这题过滤了cat,flag和空格,所以我们再借鉴上面文章提到的方法进行绕过