DVWA靶场的Command Injection的四个测试

看一下各个安全水平的源代码
DVWA靶场的Command Injection的四个测试_第1张图片上面的代码中
isset()是看变量是否已经设置并且非空,stristr()是搜索字符串在另一字符串中的第一次出现,shell_exec()是通过shell执行命令并将输出结果作为字符串输入
low级别的代码对提交的参数没有进行过滤,仅仅判断是否是Windows NT,所以用一些连接符号就可以进行测试,如
& 执行命令一和命令二
&&先执行命令一成功后再执行命令
| 只执行命令二
|| 只有命令一执行失败才执行命令二

DVWA靶场的Command Injection的四个测试_第2张图片
该级别与low的不同处是建立了一个数组,并将一些字符放在该数组,并且当目标中包含所有键名的新数组时,用$substitutions代替,也就是过滤了上述字符,也就是;和&&
代码中的array()是创建数组,str_replace()是以其他字符替换字符串里的一些字符
DVWA靶场的Command Injection的四个测试_第3张图片从这里知道medium级别过滤了&&
DVWA靶场的Command Injection的四个测试_第4张图片
但是&是可以的

DVWA靶场的Command Injection的四个测试_第5张图片
通过high级别的代码也可以看出它再medium级别的基础上又严格过滤了一些字符,对于该级别的绕过可以用|,因为从代码中可以看出它仅仅过滤了 |空格
DVWA靶场的Command Injection的四个测试_第6张图片

DVWA靶场的Command Injection的四个测试_第7张图片
DVWA靶场的Command Injection的四个测试_第8张图片
上述代码中的explode表示把字符串打散为数组,stripslashes会删除字符串中的反斜杠,该级别不存在命令注入漏洞

你可能感兴趣的:(DVWA靶场的Command Injection的四个测试)