40

详细讲解 | 利用python开发Burp Suite插件(二)

 5 years ago
source link: https://www.freebuf.com/articles/web/193950.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上一篇文章 详细讲解 | 利用python开发Burp Suite插件(一) 简单介绍了如何配置burpsuite插件开发环境和burp suite插件api的大概用途,详细内容可参考官方手册。今天将利用python实战写一个简单的sql注入插件(实现每个参数后面加入单引号),开发过程我会详细介绍每一个步骤,后续可模仿着,完善插件。

所需要的接口类:

2YFraqm.jpg!web

IBurpExtender

所有插件必须实现这个接口,类名字必须为“BurpExtender”,并且必须提供一个默认构造器”。

IBurpExtender用来在burp上面注册扩展,IBurpExtender里面还有一个registerExtenderCallbakcs类方法需要实现:

aiqQFfY.jpg!web

当扩展被调用时,会注册一个IBurpExtenderCallbacks实例,该实例提供了许多常用操作:

EFrMJjZ.jpg!web

先完成和理解部分代码:

fy6beq7.jpg!web

IIntruderPayloadGeneratorFactory :

调用IBurpExtenderCallbacks.registerintruder

PayloadGeneratorFactory()注册一个payload生成器。

此类下面有两个类方法需要实现“createNewInstance”和“getGeneratorName”

UZf6fin.jpg!web

createNewInstance方法:创建一个payload生成器新的实例,发动插件攻击时会返回payload生成器的实例。

getGeneratorName方法:用来获取payload生成器的名称

继续完成和理解代码:

fmIRjef.jpg!web

我们已经注册了payload生成器,现在我们需要用一个接口类去定义我们的payload生成器

IIntruderPayloadGenerator: 这个接口类用来定义插件的payload生成器,定义的前提是我们得有东西去定义。所以我们用IIntruderPayloadGeneratorFactory返回此接口的新实例。

这个接口类里面有三个类方法 getNextPayload”

, ”hasMorePayloads”,”reset”

ZVzami3.jpg!web

getNextPayload:用于获取下一个payload

hasMorePayloads:决定生成器是否能够提供更多payload

reset :重制生成器状态,使下次调用getNextPayload方法时返回第一条payload

继续完成和理解代码:

iAB7FjM.jpg!web

我们可以打印出current_payload和转码后的payload看看:

v6nEVnq.jpg!webryUzQfE.jpg!web

这里就不做过多解释了,一目了然。我这里使用的DVWA-low-sql的环境进行的测试。

贴一张完整的简洁的代码:

vQVjeiB.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK