談談 Command Injection 之前
要先談談 command 是什麼,所謂 command 就是命令 !(被揍
Unix | 目的 | 範例 |
---|---|---|
exit | 關閉視窗 | exit |
cd | 進入目錄 | cd .. |
mkdir | 建立目錄 | mkdir hello |
pwd | 顯示目前目錄 | pwd |
env | 顯示目前環境變數 | env |
setenv | 設定環境變數 | setenv l ls |
date | 顯示時間 | date |
mv | 移動,重新命名檔案 | mv .test .new.cp |
man | 指令查詢 | man ls |
rm | 刪除檔案 | rm test.txt |
cat/more | 顯示檔案內容 | more .test |
ls | 顯示檔案 | ls |
lp | 列印檔案 | lp .test |
cp | 複製檔案 | cp .test newfile |
pipe |
: 用來處理前面一個指令回傳來的正確資料(standard output)
ex. ls | grep ctf
用來連續下達指令 | 意義 | 範例 |
---|---|---|
分號 ; | 不考慮兩個指令相關性直接連續執行 | sync; shutdown -h now |
` | ` | |
&& | 前者執行,後者才執行;前者失敗,後者也不執行 | ls /tmp/aaa && touch /tmp/aaa/bbb |
command injection
<?php
print("<p> ping server ");
$ping=$_GET['ping'];
system("ping $ping");
?>
剛剛我們教了連接詞
如果我們在 ping 這個參數底下放
127.0.0.1 | ls
127.0.0.1 ; ls
1 || ls
127.0.0.1 && ls
假設這個網站沒有進行防護,就很容易被惡意攻擊的人取得系統權限。