DVWA通关之命令注入(command injection)
原文链接请点击:https://www.cnblogs.com/ruoli-s/p/14340551.html
难度等级:low
过关思路
- 我们先将其难度设置为
low
,看到其界面如下:
- 通过分析得知,该功能是输入一个
IP地址
,然后通过ping
进行测试,先输入127.0.0.1
和www.baidu.com
测试如下:
127.0.0.1
www.baidu.com
- 可以看到,IP地址和域名都是能够ping通的,接下来就是使用
命令拼接
测试了,
输入127.0.0.1 | whoami
命令注入成功。
- 命令汇总,经过测试,以下命令均可注入成功。
127.0.0.1|whoami
127.0.0.1&whoami
127.0.0.1000 || whoami
127.0.0.1 && whoami
-
注意:
有空格和无空格有时会有意想不到的效果 -
做完了当然得看一下源码:
可以看到,该代码没有对用户的输入做任何的过滤,直接使用shell_exec函数
执行用户输入,这是非常危险的。
难度等级:medium
过关思路
- 这里过关思路和low一致,也没啥可说的,我们主要看一下源码就行。
- 源代码如下:
通过分析,可以看出,medium
关卡比low
关卡多了一个黑名单
。其通过数组的方式将&&
和;
进行了过滤,即将其替换为空
。但是,这种过滤基本上还是跟没有过滤差不多,因为黑名单里的过滤太少了,黑名单也不安全。
难度等级:high
过关思路
- 上手先测试几个前面的payload,发下好多都被过滤了,但是还有几个可以用:
127.0.0.1 || whoami
127.0.0.1|whoami
127.0.0.1000||whoami
- 我们直接看源代码:
可以看到,这次的黑名单过滤明显的多了起来,但是也发现(可能是故意给我们漏出来的😂),其在过滤的时候,没有过滤|
而是过滤了|+空格
,所以,该代码只是遇到单单一个|
,不会进行过滤。