三、SQLMAP自帶繞過腳本tamper的講解
sqlmap在默認情況下除了使用CHAR()函數防止出現單引號,沒有對注入的數據進行修改,還可以使用--tamper參數對數據做修改來繞過WAF等設備,其中大部分腳本主要用正則模塊替代攻擊載荷字符編碼的方式來繞過WAF的檢測規則。
sqlmap.py xxxx --tampet ”模塊名“
目前官方提供53個繞過腳本,在日常使用中,我們會對一些網站是否有安全防護(WAF/IDS/IPS)進行試探,可以使用參數--identify-waf進行檢測。下面介紹一些常用的tamper腳本。
1、apostrophemask.py :將引號替換為UTF-8,用於過濾單引號。
2、base64encode.py :替換為base64編碼。
3、multiplespaces.py:圍繞SQL關鍵字添加多個空格。
4、space2plus.py:用+號替換為空格。
5、nonrecursivereplacement.py:作為雙重查詢語句,用雙重語句替代預定義的SQL關鍵字(適用於非常弱的自定義過濾器,例如將SELECT替換為空)。
6、space2randomblank.py:將空格替換為其他有效字符。
7、unionalltounion.py:將UNION ALL SELECT替換為UNION SELECT。
8、securespher.py:追加特制的字符串。
9、space2hash.py:將空格替換為#號,並添加一個隨機字符串和換行符。
10、space2mssqlblank.py(mssql):將空格替換為其他空符號。
11、spce2mssqlhash.py:將空格替換為#號,並添加一個換行符。
12、between.py:用NOT BETWEEN 0 AND 替換大於號(>),用BETWEN AND 替換等號(=)。
13、percentage.py:ASP允許在每個字符前面添加一個%號1.
14、sp_password.py:從DBMS日志的自動模糊處理的有效載荷中追加sp_password。
15、charencode.py:對給定的Payload全部字符使用URL編碼(不處理已經編碼的字符)。
16、randomcase.py:隨機大小寫。
17、charunicodeencode.py:字符串unicode編碼。
18、space2comment.py:將空格替換為/**/。
19、equaltolike.py:將等號替換為like。
20、greatest.py:繞過對”>"的過濾,用GREATEEST替換大於號。
以上測試通過的數據庫類型和版本:
mysql4、mysql5.0和mysql5.5
orcale10g
postgresql8.3、postgresql 8.4和postgresql9.0
21、ifnull2ifisnull.py:繞過對IFNULL的過濾,替換類似IFNULL(A,B)為IF(ISNULL(A),B,A)。
測試通過的數據庫類型和版本為MySQL 5.0和MySQL 5.5
22、modsecurityversioned.py:過濾空格,使用MySQL內聯注釋的方式進行注入。
測試通過的數據庫類型和版本為MySQL5.0
23、space2mysalblank.py:將空格替換為其它空白符號(適用於MySQL)
測試通過的數據庫類型和版本為MySQL5.1
24、modesecurityzeroversioned.py:使用MySQL內聯注釋的方式(/*!00000*/)
測試通過的數據庫類型和版本為MySQL 5.0
25、space2mysqldash.py:將空格替換為--,並添加一個換行符。
26、bluecoat.py:在SQL語句之后用有效的隨機空白符替換空格符,隨后用LIKE替換等於號。
測試通過的數據庫類型和版本為MySQL5.1和SGOS
27、versionedkeywords.py:注釋繞過。
28、halfversionedmorekeywords.py:當數據庫為MySQL時繞過防火牆,在每個關鍵字之前添加MySQL版本注釋。
測試通過的數據庫類型和版本為MySQL 4.0.18和MySQL 5.0.22
29、space2morehash.py:將空格替換為#號,並添加一個隨機字符串和換行符。
測試通過的數據庫類型和版本為MySQL5.1.14
30、apostrophenullencode.py:用非法雙字節unicode字符替換單引號。
31、appendnullbyte.py:在有效負荷的結束位置加載零字節字符編碼。
32、chardoubleeencode.py:對給定的Payload全部字符使用雙重URL編碼(不處理已編碼的字符)。
33、unmagicquotes.py:用一個多字節組合(%bf%27)和末尾通用注釋也一起替換空格。
34、randomcomments.py:用/**/分割SQL關鍵字。
雖然SQLMAP自帶的tamper可以做很多事情,但在實際環境中,往往比較復雜,可能會遇到很多情況,tamper不可能很全面地應對各種環境。