84251449 2020-01-16
1、LOW等级命令行注入
在低等级的命令行注入没有任何的过滤,通过查看源码可以得知,
step1:使用ping 127.0.0.1&&dir可以得出如下结果
step2:使用 ping127.0.0.1&net user可以得到如下运行结果
step3:使用ping 127.0.0.1|dir可以得到如下结果
ps:在这里有必要说一下逻辑运算符“&”和“|”都是什么意思
&&:代表首先执行命令a在执行命令b,但是前提条件是命令a执行正确才会执行命令b,在a执行失败的情况下不会执行b命令。所以又被称为短路运算符。
&:代表首先执行命令a在执行命令b,如果a执行失败,还是会继续执行命令b。也就是说命令b的执行不会受到命令a的干扰,在执行效率上来说“&&”更加高效。
||:代表首先执行a命令在执行b命令,如果a命令执行成功,就不会执行b命令,相反,如果a命令执行不成功,就会执行b命令。
|:代表首先执行a命令,在执行b命令,不管a命令成功与否,都会去执行b命令。
2、medium等级命令行注入
medium等级的命令行注入增加了一些过滤,通过查看源码可以看到,他将&&和:过滤成了空字符,但是他并没有过滤“|”,所以我们依然可以进行注入。
step1:使用命令ping 127.0.0.1|net user可以得到如下结果
step2:使用ping 127.0.0.1 &dir可以得到如下结果
step3:还有很多方法可以进行medium等级的命令行注入,比如“||”操作(使a命令执行失败),
“&;”、"|;"、"||;"......
3、high等级命令行注入
high等级的命令行注入过滤的东西比较多,但是他在过滤的时候有bug。
step1:使用命令ping 127.0.0.1|dir可以得到如下结果