Python實戰編寫Burp 「sql注入」插件(一)

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

前言:

上一篇文章當中(利用python開發Burp Suite插件

簡單介紹了如何配置burpsuite插件開發環境和burp suite插件api的大概用途,詳細內容可參考官方手冊。今天將利用python實戰寫一個簡單的sql注入插件(做到每個參數後面加入單引號),開發過程我會詳細介紹每一個步驟,後續可模仿著,完善插件。

所需要的接口類

Python實戰編寫Burp 「sql注入」插件(一) 科技 第1張

IBurpExtender

所有插件必須做到這個接口,類名字必須為「BurpExtender」,並且必須提供一個默認構造器」。

IBurpExtender用來在burp上面註冊擴展,IBurpExtender里面還有一個registerExtenderCallbakcs類方法需要做到:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第2張

當擴展被調用時,會註冊一個IBurpExtenderCallbacks實例,該實例提供了許多常用操作:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第3張

先完成和理解部分代碼:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第4張

IIntruderPayloadGeneratorFactory:

調用IBurpExtenderCallbacks.registerintruder

PayloadGeneratorFactory()註冊一個payload生成器。

此類下面有兩個類方法需要做到「createNewInstance」和「getGeneratorName」

Python實戰編寫Burp 「sql注入」插件(一) 科技 第5張

createNewInstance方法:創建一個payload生成器新的實例,發動插件攻擊時會返回payload生成器的實例。

getGeneratorName方法:用來獲取payload生成器的名稱

繼續完成和理解代碼:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第6張

我們已經註冊了payload生成器,現在我們需要用一個接口類去定義我們的payload生成器

IIntruderPayloadGenerator:這個接口類用來定義插件的payload生成器,定義的前提是我們得有東西去定義。所以我們用IIntruderPayloadGeneratorFactory返回此接口的新實例。

這個接口類里面有三個類方法」getNextPayload」

,」hasMorePayloads」,」reset」

Python實戰編寫Burp 「sql注入」插件(一) 科技 第7張

getNextPayload:用於獲取下一個payload

hasMorePayloads:決定生成器是否能夠提供更多payload

reset :重制生成器狀態,使下次調用getNextPayload方法時。

返回第一條payload

繼續完成和理解代碼:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第8張

我們可以列印出current_payload和轉碼後的payload看看:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第9張

Python實戰編寫Burp 「sql注入」插件(一) 科技 第10張

這里就不做過多解釋了,一目了然。我這里使用的DVWA-low-sql的環境進行的測試。

貼一張完整的簡潔的代碼:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第11張

最後再附一張圖整理邏輯:

Python實戰編寫Burp 「sql注入」插件(一) 科技 第12張

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!