詳細講解 | 利用python開發Burp Suite外掛(二)
上一篇文章 詳細講解 | 利用python開發Burp Suite外掛(一) 簡單介紹瞭如何配置burpsuite外掛開發環境和burp suite外掛api的大概用途,詳細內容可參考官方手冊。今天將利用python實戰寫一個簡單的sql注入外掛(實現每個引數後面加入單引號),開發過程我會詳細介紹每一個步驟,後續可模仿著,完善外掛。
所需要的介面類:
IBurpExtender :
所有外掛必須實現這個介面,類名字必須為“BurpExtender”,並且必須提供一個預設構造器”。
IBurpExtender用來在burp上面註冊擴充套件,IBurpExtender裡面還有一個registerExtenderCallbakcs類方法需要實現:
當擴充套件被呼叫時,會註冊一個IBurpExtenderCallbacks例項,該例項提供了許多常用操作:
先完成和理解部分程式碼:
IIntruderPayloadGeneratorFactory :
呼叫IBurpExtenderCallbacks.registerintruder
PayloadGeneratorFactory()註冊一個payload生成器。
此類下面有兩個類方法需要實現“createNewInstance”和“getGeneratorName”
createNewInstance方法:建立一個payload生成器新的例項,發動外掛攻擊時會返回payload生成器的例項。
getGeneratorName方法:用來獲取payload生成器的名稱
繼續完成和理解程式碼:
我們已經註冊了payload生成器,現在我們需要用一個介面類去定義我們的payload生成器
IIntruderPayloadGenerator: 這個介面類用來定義外掛的payload生成器,定義的前提是我們得有東西去定義。所以我們用IIntruderPayloadGeneratorFactory返回此介面的新例項。
這個介面類裡面有三個類方法 ” getNextPayload”
, ”hasMorePayloads”,”reset”
getNextPayload:用於獲取下一個payload
hasMorePayloads:決定生成器是否能夠提供更多payload
reset :重製生成器狀態,使下次呼叫getNextPayload方法時返回第一條payload
繼續完成和理解程式碼:
我們可以打印出current_payload和轉碼後的payload看看:
這裡就不做過多解釋了,一目瞭然。我這裡使用的DVWA-low-sql的環境進行的測試。
貼一張完整的簡潔的程式碼: