DVWA中的Command Injection(命令执行)

常用url编码:%20=空格,%5c=\,%26=&,%7c=|
A & B:不管A执行成功与否,都会执行B(将上一个命令的输入作为下一个命令的输入)
A && B:先执行A成功后执行B
A | B:只执行B
A || B:A失败再执行B(A成功则不执行B)
(1) low:没有过滤
127.0.0.1 则可以成功
(2)medium:过滤了&&,;于是可以使用&继续执行,如:127.0.0.1&ipconfig
**(3) high:**过滤了如下
DVWA中的Command Injection(命令执行)_第1张图片
但是,我们仔细看源代码会发现,本来可以过滤一个|,就可以过滤所有|、||、|||等等,可是仔细观察,会发现过滤的|后面有一个空格,也就表示,它过滤的是|空格,并没有过滤|,所以我们可以利用|进行绕过。

方法一:如:127.0.0.1 || ipconfig(从上面可以看出,它确实有过滤||,但是,你注意到了顺序吗!!它是由上到下依次查找转义,它首先转义|空格
所以127.0.0.1 || ipconfig经过过滤后就是127.0.0.1 |ipconfig,这里的|是原命令语句(127.0.0.1 || ipconfig)左边的,因此,最后的执行命令便成了127.0.0.1 |ipconfig,如果先过滤|| 再过滤 | 则就不可以了)。

方法二:可以直接去掉空格,127.0.0.1 |ipconfig执行。

你可能感兴趣的:(DVWA中的Command Injection(命令执行))