本題考的是命令執行漏洞方面的知識。
首先,我們要知道命令執行漏洞是什么:
當應用需要調用一些外部程序去處理內容的情況下,就會用到一些執行系統命令的函數。如PHP中的system,exec,shell_exec等,當用戶可以控制命令執行函數中的參數時,將可注入惡意系統命令到正常命令中,造成命令執行攻擊。
比如題目中,直接把用戶輸入的參數不經過過濾直接放在ping命令之后,而惡意攻擊者可以在輸入的參數中用&&截斷,而執行下一個惡意命令
常見的連接符有:
常見連接符 | 舉例 | 效果 |
---|---|---|
; | A;B | 先執行A,再執行B |
& | A&B | 簡單拼接,A B之間無制約關系 |
| | A|B | 顯示B的執行結果 |
&& | A&&B | A執行成功,然后才會執行B |
|| | A||B | A執行失敗,然后才會執行B |
來看看這題。
首先進入頁面如下:
先試試ping本機127.0.0.1:
發現會有回顯打印,所以試試其他命令127.0.0.1 && ls:
發現會執行ls這條命令,所以可以先查找flag有關的文件。
命令:127.0.0.1 && find / -name "flag*",發現有一個flag.txt文件,最后直接cat就行了
命令:127.0.0.1 && cat /home/flag.txt