1. 程式人生 > >Python實戰編寫Burp “sql注入”外掛(一)

Python實戰編寫Burp “sql注入”外掛(一)

 

 

前言:上一篇文章(利用python開發Burp Suite外掛 https://blog.csdn.net/xuandao_ahfengren/article/details/85109223

簡單介紹瞭如何配置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的環境進行的測試。

 

貼一張完整的簡潔的程式碼:

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

 

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