sqlmaptamper是sqlmap的子模塊,它可以對sqlmap的注入請求進行破壞。它提供了許多內置的tamper腳本以及自定義tamper腳本的功能。
一、tamper的使用
在使用sqlmap進行注入測試時,可以通過添加–tamper選項來使用tamper腳本,默認情況下,它會使用內置的tamper腳本:
sqlmap -u "http://example.com/?id=1" --tamper=randomcomments
上述命令中,我們指定了要使用randomcomments這個內置的tamper腳本。sqlmap會使用該腳本對請求進行破壞,達到繞過Web應用程序的WAF或者其他防禦機制的效果。
對於內置tamper腳本,可以在sqlmap源碼目錄下的tamper目錄下找到它們。
除了內置的tamper腳本外,sqlmaptamper還提供了自定義tamper腳本的功能。
二、自定義tamper腳本
使用sqlmaptamper自定義tamper腳本的步驟如下:
1、編寫自定義tamper腳本:
def tamper(payload):
return payload.replace(" ", "/* sqlmaptamper */")
上面的代碼實現了將sql語句中的空格替換為/* sqlmaptamper */。當sqlmaptamper將該腳本應用於注入請求時,會對空格進行替換,達到繞過Web應用程序的防禦機制的效率。
2、將自定義tamper腳本存儲在任意的文件內,如abc.py。
3、使用以下命令運行sqlmap,其中tamper參數指定該腳本:
sqlmap -u "http://example.com/?id=1" --tamper=/path/to/abc.py
上述命令中,我們將自定義tamper腳本存儲在了/path/to/abc.py中。
三、內置tamper腳本的介紹
1、apostrophemask
該tamper腳本會對注入測試的payload中的單引號進行轉義,繞過單引號引起的錯誤。
2、base64encode
該tamper腳本會對注入測試的payload進行base64編碼,繞過一些WAF的檢測。
3、bluecoat
該tamper腳本會對注入測試的payload中需要轉義的字符進行轉義,繞過藍海(Bluecoat)等WAF的檢測。
4、chardoubleencode
該tamper腳本會對注入測試的payload中的每個字符進行雙URL編碼。例如,空格會被編碼為%2520。
5、concat2concatws
該tamper腳本會使用concat_ws()函數代替concat()函數進行字符串拼接,並繞過一些WAF的檢測。
6、equaltolike
該tamper腳本會將=運算符替換為LIKE運算符,並繞過一些WAF的檢測。
7、randomcomments
該tamper腳本會隨機添加SQL注釋,繞過一些WAF的檢測。
8、space2comment
該tamper腳本會將空格替換為SQL注釋,繞過一些WAF的檢測。
9、space2dash
該tamper腳本會將空格替換為破折號,繞過一些WAF的檢測。
10、space2hash
該tamper腳本會將空格替換為#號,繞過一些WAF的檢測。
11、space2morecomment
該tamper腳本會將空格替換為SQL注釋後面的字符串,繞過一些WAF的檢測。
12、space2mssqlblank
該tamper腳本會將空格替換為MSSQL中的 \t(水平製表符),繞過一些WAF的檢測。
13、space2mysqlblank
該tamper腳本會將空格替換為MySQL中的 \t(水平製表符),繞過一些WAF的檢測。
14、space2plus
該tamper腳本會將空格替換為+號,繞過一些WAF的檢測。
15、space2randomblank
該tamper腳本會將空格替換為隨機數量的空白字符,繞過一些WAF的檢測。
16、space2slashes
該tamper腳本會將空格替換為正斜杠和反斜杠,繞過一些WAF的檢測。
17、unionalltounion
該tamper腳本會將UNION ALL替換為UNION,繞過一些WAF的檢測。
四、結語
sqlmaptamper作為一個注入測試利器,可以針對不同的情況選擇合適的tamper腳本,幫助滲透測試人員繞過Web應用程序的防禦機制。同時,通過自定義tamper腳本,還能夠滿足更為個性化和複雜的注入測試需求。
原創文章,作者:KFIS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/137740.html