尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
前言:
上一篇文章當中(利用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的環境進行的測試。
貼一張完整的簡潔的代碼:
最後再附一張圖整理邏輯: