题目描述
小宁写了个 ping 功能,但没有写 waf,X 老师告诉她这是非常危险的,你知道为什么吗。
Solution
简单尝试了一下环境,这个程序的原理,可能是把用户提供的参数直接丢到 shell 里执行,没有做参数过滤。对于命令执行漏洞,我们有一些常见的连接符总结:
连接符 | 举例 | 效果 |
---|---|---|
; |
A;B |
先执行 A,再执行 B |
& |
A&B |
先执行 A 再执行 B,如果 A 执行失败,还会继续执行 B |
| |
A|B |
先执行 A 再执行 B,不管 A 成功与否都会去执行 B |
&& |
A&&B |
A 执行成功,然后才会执行 B |
|| |
A||B |
A 执行失败,然后才会执行 B |
基于上述前提,我们可以构造一个特别的输入:0.0.0.0 | find / -name "*.txt"
可以发现有/home/flag.txt
文件,我们再cat
它就好: