点击此处获得更好的阅读体验
来自 cmrex123 原创投稿 |
## 题目考点 |
- 命令注入 |
- 过滤目录分割符/ |
- 理解linux和windows中各种分割符号的作用以及用法。 |
解题思路
首先使用本地ping查看结果。
1 | 127.0.0.1 |
返回了正常的ping的数据
使用管道查看当前位置存在的文件有哪些
1 | 127.0.0.1|ls |
并没有过滤ls和管道符号'|'。这里显示出来了当前目录下存在了一个文件夹:flag_is_here。另外一个index.php的文件,毫无疑问,flag是在flag_is_here文件夹里的。
思路上来说应该是cat文件,必须要使用目录分隔符/
,但是题目给过滤。需要另外寻找办法
linux中:%0a
、%0d
、;
、&
、|
、&&
、||
windows中:%0a
、&
、|
其中分号;
的作用就是在 shell 中,担任”连续指令”功能
&&的方式:command1 && command2
如果command1执行成功,则执行command2
使用分号进行命令执行 payload:
1 | ;cd flag_is_here&&ls |
我们使用的分号就不用前面的127.0.0.1了。同时出现了在flag_is_here目录下的文件:flag_24324515113881.php
既然已经成功的知道了目录下的文件,那就直接cat一下
1 | ;cd flag_is_here&&cat flag_24324515113881.php |
在浏览器中f12打开,源码中出现flag