如何写一个 Burp 插件
Burp 是 Web 安全测试中不可或缺的神器。每一个师傅的电脑里面应该都有一个 Burp。同时 Burp 和很多其他神器一样,它也支持插件。但是目前总体来说网上 Burp 插件开发的资料不是特别特别的丰富。今天我也来讲讲自己如何从一个完全不会 Burp 插件开发的小白如何学习 Burp 插件的开发。
如何调试
其实开发一样东西,调试真的特别重要。如果没有调试,那就和瞎子摸象差不多,非常的难顶。尤其是在 Burp 插件的开发过程中,如果你不可以调试,那你就必须把 jar 包打包出来,再安装,然后通过 output 来打印调试,这样的确非常地痛苦。后来在网上找了一些资料,一开始没太明白,后来研究发现原来调试配置这么简单。这么我们以宇宙 JAVA 开发神器 IDEA 为例。
1.配置 DEBUG
首先是在 IDEA 里面配置调试。点击右上角里面的配置,点击 "Edit Configurations" 就可以进入对 DEBUG 的配置页面。新增一个 Remote 配置,命名可以随自己的喜好。
2. 命令行启动 Burp
为了配合调试,需要在命令行中使用刚才新建 DEBUG 配置的参数来启动 Burp。
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2.1.02.jar
3. 部署 jar 包,打断点
可以现在程序中打一下断点。接着就是编译 jar 包,并且启动 IDE 的 DEBUG。将 jar 包部署到 Burp 中,下面就可以快乐地调试了。
Burp 开发
老实说其实 Burp 插件开发其实还是比较简单的,只要你掌握常规的套路,熟悉了基本的 API 之后,基本就可以进行插件的开发。插件开发最困难的部分其实是 GUI 的开发,不过这也属于 JAVA GUI 开发的范畴,这个暂不讨论。Burp 开发注意以下几点:
所有 Burp 插件都必须实现 IBurpExtender 接口
实现的类必须叫做 BurpExtender
必须要重写 registerExtenderCallbacks 方法
后续如果需要调用启用其它接口的方法,那么也需要在 BurpExtender 中实现相应的接口。讲一个例子,比如要对 Proxy 进行相关的操作。
首先,需要在 BurpExtender 中实现 IProxyListener 接口,接下来就需要实现 processProxyMessage 方法。在 processProxyMessage 方法中,就可以对发送的请求以及相应进行处理。
public void processProxyMessage(boolean messageIsRequest, final IInterceptedProxyMessage iInterceptedProxyMessage)
下面再讲一个例子,获取请求中的请求头:
public List<Map<String, String>> getHeaders(IHttpRequestResponse messageInfo) {
List<Map<String, String>> headers = new ArrayList<>();
IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo);
List<String> h = analyzeRequest.getHeaders();
for (String h1: h) {
Map<String, String> hMap = new HashMap<>();
if (h1.startsWith("GET") || h1.startsWith("POST")) {
continue;
} else {
String[] header = h1.split(":", -1);
hMap.put(header[0], header[1]);
}
headers.add(hMap);
}
return headers;
}
总结
其实总的来说 Burp 插件开发并不特别困难,只要当一个合格的 API 调用者就可以了。网上目前也有很多开源的 Burp 插件代码,其实你可以找一个感兴趣的 Burp 插件代码看一下,你就可以快速地了解这些 API 的作用。其实 Burp 的 Extender 中的 APIs 就已经列出了所有可用的 API 接口。
如何写一个 Burp 插件的更多相关文章
- 如何写一个jquery插件
本文总结整理一下如何写一个jquery插件?虽然现今各种mvvm框架异常火爆,但是jquery这个陪伴我们成长,给我们带来很多帮助的优秀的库不应该被我们抛弃,写此文章,作为对以往欠下的笔记的补充, ...
- 为PhoneGap写一个android插件
为PhoneGap写一个android插件,要怎么做? 其实这句话应该反过来说,为android写一个PhoneGap插件,要怎么做? 这里以最简单的Hello World!为例,做个说明: 1.第一 ...
- 自己写一个 jQuery 插件
我知道这一天终将会到来,现在,它来了. 需求 开发 SharePoint 的 CSOM 应用时,经常需要在网页上输出一些信息. 这种需求和 alert 的弹窗.F12 的断点查看信息的场景是不一样的: ...
- 如何给Ionic写一个cordova插件
写一个cordova插件 之前由javaWeb转html5开发,由于面临新技术,遂在适应的过程中极为挣扎,不过还好~,这个过程也极为短暂:现如今面临一些较为复杂的需求还会有一丝丝头痛,却没有一开始那么 ...
- 写一个umi插件 自动生成代码 解放cv的双手
引言 最近在写一个中台项目,使用的react的umi框架. 各种增删改查.基本是列表页 新建页 详情页这种页面 为了避免不必要的简单重复(主要是想偷懒) 于是想去实现自己的一个代码生成器 探索 首先, ...
- 80行代码教你写一个Webpack插件并发布到npm
1. 前言 最近在学习 Webpack 相关的原理,以前只知道 Webpack 的配置方法,但并不知道其内部流程,经过一轮的学习,感觉获益良多,为了巩固学习的内容,我决定尝试自己动手写一个插件. 这个 ...
- 基于vue框架手写一个notify插件,实现通知功能
简单编写一个vue插件,当点击时触发notify插件,dom中出现相应内容并且在相应时间之后清除,我们可以在根组件中设定通知内容和延迟消失时间. 1. 基础知识 我们首先初始化一个vue项目,删除不需 ...
- 写一个jq插件
本文章摘自博客园的http://www.cnblogs.com/JustinYoung/archive/2010/03/30/jquery-chajian.html,写此文章只是方便自己记载技术 一个 ...
- 如何使用jQuery写一个jQuery插件
jQuery插件其实是前端框架的思维,构成一个框架,个人认为必须满足以下几个基础条件:1. 可重用,2. 兼容性,3. 维护方便,虽说现在有很多比较成熟的前端框架,但是也有部分存在配置麻烦,学习成本大 ...
随机推荐
- Java并发编程的艺术笔记(六)——HashMap、ConcurentHashMap的原理与实现
一.线程不安全的HashMap 多线程环境下,使用HashMap进行put操作会引起死循环(jdk1.7 Entry链表形成环形数据结构),导致CPU利用率接近100%. 结构:数组 table[]+ ...
- Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java 版权声明:本 ...
- 消息队列rabbitmq/kafka
12.1 rabbitMQ 1. 你了解的消息队列 rabbitmq是一个消息代理,它接收和转发消息,可以理解为是生活的邮局.你可以将邮件放在邮箱里,你可以确定有邮递员会发送邮件给收件人.概括:rab ...
- Alpha发布--美工+文案
此作业对应要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8677 一.美工: 1.产品logo 2.原型页面展示 2.1 进入萌 ...
- NSIS打包electron程序为exe安装包
在我的上一篇博客已经介绍了将electron程序生成一个exe可执行文件,但是这并不是最终能够发给用户用来安装的最终安装包,下面我们就介绍如何使用NISI将我们的应用程序打包成安装包: 上一篇博客我们 ...
- WPF界面设计—撸大师
WPF界面设计,模仿了金山卫士,360,鲁大师的界面! <!--无边框窗体--> <Style x:Key="NoResize_window" TargetTyp ...
- Python_编程特色
目录 目录 前言 软件环境 列表推导式 字典的默认值 forelse语句 交换两个变量的值 链式比较 真值测试 序列类型元素反转 连接字符串和列表 内置算术函数 利用zip来创建键值对 最后 前言 P ...
- Web01_HTML
语法和规范: 1.所有的HTML文件后缀名都是以.html或者.htm结尾的,建议使用.html结尾 2.整个html文件分别由头部分<head></head>和体部分< ...
- ElasticSearch的中文分词器ik
一.前言 为什么要在elasticsearch中要使用ik这样的中文分词呢,那是因为es提供的分词是英文分词,对于中文的分词就做的非常不好了,因此我们需要一个中文分词器来用于搜索和使用. 二.IK ...
- 分享我积攒的测试相关的资料收集awesome-test
微信扫描关注我的公众号,回复测试资料 即可免费获取资料下载地址,不定期更新资料