burp插件开发
最近这几天在写burp的插件,有一些写burp插件的流程和误区想跟大家分享一下:
第一步,打开burpsuit,打开extender页面,并将burp中自带的api代码导出,方便后续的代码开发;
第二步,使用idea创建一个java项目并将上一步导出的api代码导入到该项目中;
第三步,在导入的项目中创建一个叫BurpExtender.java的类并Implements IBurpExtender这个类,注意,必须叫这个名字,否则burp会识别不到此插件的存在,如上图;
第四步,在BurpExtender中书写,你想要的代码;
1. 首先需要定义全局变量,如下图:
public class BurpExtender implements IBurpExtender {
IExtensionHelpers helpers;
PrintWriter stdout;
IBurpExtenderCallbacks mCallback;
}
2. mCallback 此变量是在书写burp插件中最必不可少的变量,如果你需要调用你所导出的api的函数的话,必须要用mCallback先注册一下,如下;
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
// set our extension name
mCallback = callbacks;
mCallback.setExtensionName("Active Scan extension");//插件名字
//mCallback.registerContextMenuFactory(this);
//调用burp对图形化界面进行编辑
mCallback.registerHttpListener(this);
//调用burp的进程监听,可以获取burp的所有进程,并加以更改
mCallback.registerScannerCheck(this);//调用burp中对扫描的check模块
//在初始化的时候将burp设置成不拦截模式
mCallback.setProxyInterceptionEnabled(false);
//mCallback.registerScannerListener(this);//调用burp扫描模块
helpers = mCallback.getHelpers();
//callbacks.getHelpers() 常用辅助方法
// obtain our output and error streams
stdout = new PrintWriter(callbacks.getStdout(), true);
PrintWriter stderr = new PrintWriter(callbacks.getStderr(), true);
// write a message to our output stream
stdout.println("Hello output new ");
}
3. 上述函数为burp中自带函数,并在加载插件时自动调用并运行的函数,同时注册的时候,还要实现相应的interface类;
4. helps变量在实现时应使用mCallBack此变量进行初始化;
helpers = mCallback.getHelpers(); //以下为简单的helps调用 //method为burp捕捉的请求所发送的method,如get、post、options String method = helpers.analyzeRequest(baseRequestResponse).getMethod(); //url为burp捕捉到的请求所发送的url String url = helpers.analyzeRequest(baseRequestResponse).getUrl().toString();
5. 其中helps包含你需要burp此软件传入给你的任意变量和之前burp所具有的功能,如下图,举例getRequestParameter代表获取传入的request变量;
6.stdout代表需要在burp自带的插件页面上打印出来的东西,如下图;
//初始化stdout
stdout = new PrintWriter(callbacks.getStdout(), true);
PrintWriter stderr = new PrintWriter(callbacks.getStderr(), true);
// write a message to our output stream
stdout.println("Hello output new ");
7.在下图标红的地方打印出来你需要打印出的东西如log、error,同时burp具有专门打印错误的函数,使用方法和stdout相同
下一篇文章讲如何写真正的burp插件,并实现burp发送邮件功能
burp插件开发的更多相关文章
- Burp插件开发——环境配置
最近打算开发个Burp插件,从网上各种地找资料学习.第一步就应该是环境配置,请见下文. (其实最重要的前提是你已经安装了Burp,否则下面的所有内容都是无稽之谈了. https://pan.baidu ...
- 如何写一个 Burp 插件
Burp 是 Web 安全测试中不可或缺的神器.每一个师傅的电脑里面应该都有一个 Burp.同时 Burp 和很多其他神器一样,它也支持插件.但是目前总体来说网上 Burp 插件开发的资料不是特别特别 ...
- 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)
基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- jira的插件开发流程实践
怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...
- Vue插件开发入门
相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...
- 【原创】记一次Project插件开发
一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...
- JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- [Tool] Open Live Writer插件开发
一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...
随机推荐
- u-boot源码下载
1. 使用git下载u-boot源码 1.1 clone u-boot源码仓库 可以使用git.HTTP.和 rsync协议来下载u-boot源码.你可以使用如下方法来克隆源码树: $ git cl ...
- 医院his系统数据库恢复
医院IT系统的重要性堪比金融行业,“银行系统宕机,老百姓不能取钱:医院HIS系统宕机,老百姓不能看病”, 医院信息系统称得上是迄今为止企业级信息系统中最复杂的一类. 某医院HIS系统SQL2008数 ...
- DOMContentLoaded
setTimeout(function(){ alert("settimeout"); },0); EventUtil.addHandler(window, "DOMCo ...
- iOS 之 深复制、浅复制
深复制不仅复制对象本身,对象持有的属性对象也做了复制. 浅复制之复制对象本身,不对里面的属性进行复制.
- 3.2. 添加模板版本(Core Data 应用程序实践指南)
为了不像3.1那样崩溃,修改模型之前先创建新的模型版本.添加之后,会生成一个新的xcdatamodel文件,并且跟原来的内容完全一样,这有意思了,但是不要删除原来旧版的模型.旧的模型有助于把原来持久化 ...
- Strut、Spring、Hibernate如何实现资源整合(SSH)呢?
Strut.Spring.Hibernate如何实现资源整合(SSH)呢? 其实很简单,我们从Spring与Hibernate的整合中可以看出来,由Spring的配置文件来管理Hiberbate的配置 ...
- ASP.NET MVC TempData使用心得
说明: 在ASP.NET MVC中資料傳遞主要有ViewData與TempData ViewData主要是Controller傳遞Data給View,存留期只有一個Action,要跨Action要使用 ...
- delphi中获得进程列表或想要的进程(枚举进程、遍历进程)
一个常见的编程任务是枚举所有运行的"应用程序".Windows 任务管理器就是一个很好的例子.它用两种方式列出"应用程序".任务管理器的第一个选项卡列出桌面上的 ...
- jQuery原型技术分解
jQuery原型技术分解 起源----原型继承 用户过javascript的都会明白,在javascript脚本中到处都是 函数,函数可以归置代码段,把相对独立的功能封闭在一个函数包中.函数也可以实现 ...
- lufylegend库 鼠标事件 循环事件 键盘事件
lufylegend库 鼠标事件 循环事件 键盘事件 <!DOCTYPE html> <html lang="en"> <head> <m ...