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可以得到如下結果