题目描述

小宁写了个 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"

011-1.png

可以发现有/home/flag.txt文件,我们再cat它就好:

011-2.png