sqlmap Tamper腳本編寫
前言
sqlmap是一個自動化的SQL注入工具,其主要功能是掃描,發現並利用給定的URL的SQL注入漏洞,目前支持的數據庫是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。采用五種獨特的SQL注入技術,分別是:
- 基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入。
- 基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。
- 基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中。
- 聯合查詢注入,可以使用union的情況下的注入。
- 堆查詢注入,可以同時執行多條語句的執行時的注入。
sqlmap是滲透測試中判斷sql注入的神器,但是sqlmap不會繞過一些過濾(比如過濾and),也不會繞過安全狗等WAF。為了讓sqlmap更加方便(為了讓自己偷懶不用手動寫python腳本sql 注入)----->sqlmap提供了tamper
tamper內置了很多繞過功能(比如替換雙引號 在括號前增減內聯注釋) 下面就是tamper文件夾中對應的模塊。
tamper格式介紹
tamper文件夾下的所有python文件都滿足以下格式
import re
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.HIGHEST
# 對當前腳本的介紹(不用管)
def dependencies():
pass
# 對payload進行處理(知識舉個例子 payload將空格變成/**/ 將union變成UnIoN)
def tamper(payload, **kwargs):
payload = payload.replace('union', 'UnIoN')
payload = payload.replace(' ', '/**/')
return payload
編寫完成后放到tamper文件夾下 sqlmap就可以直接使用
sqlmap -u "xxxxx" --tamper "xxx.py,yyy.py" # tamper可以有一個或多個py文件
遇到sql注入的問題直接使用sqlmap是沒有靈魂的,但是如果經過手動判斷,自己編寫了tamper之后再用sqlmap那就是有靈性的( ͡°ᴥ ͡° ʋ)( ͡°ᴥ ͡° ʋ)( ͡°ᴥ ͡° ʋ)。