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 插件开 ...
随机推荐
- java学习(三) java 中 mongodb的各种操作
一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is 精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String ...
- 轻轻的扩展了一下IEnumerable<T>
今天用EF写东西玩,觉得IEnumerable里面除了where().select(),是不是能添加点其他方法呢. 想做就做,F12到方法定义: public static IEnumerable&l ...
- UVA - 140 Bandwidth(带宽)(全排列)
题意:给定图,求是带宽最小的结点排列. 分析:结点数最多为8,全排列即可.顶点范围是A~Z. #pragma comment(linker, "/STACK:102400000, 10240 ...
- DDD设计一个电商网站
DDD设计一个电商网站(十一)-- 最后的准备 阅读目录 前言 准备 实现 结语 一.前言 最近实在太忙,上周停更了一周.按流程一步一步走到现在,到达了整个下单流程的最后一公里--结算页的处理. ...
- PHP新手之学习数组声明
数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的集合称为数组.下面介绍PHP中的数组声明. 一.数组的概述 1.数组的本质:管理 ...
- 使用(Drawable)资源——LayerDrawable资源
与StateListDrawable有点类似,LayerDrawable也可包含一个Drawable数组,因此系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会 ...
- 关于老版本ubuntu源不能用的问题
在解决方向键为大写ABCD时安装vim 我的是Ubuntu 10.10 老版本 输入 sudo apt-get install vim 时出现 Package 'vim' has no install ...
- OBJECT和EMBED标签
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED ...
- ASP.NET MVC中使用异步控制器
线程池 一直想把项目改写成异步,但是ASP.NETMVC3下写的过于繁琐,.NET 4.5与ASP.NET MVC下代码写起来就比较简单了, MS好像也一直喜欢这样搞,每一个成熟的东西,都要演变好几个 ...
- ExtJS与后台Java交互
参考博客:http://blog.csdn.net/wanghuan203/article/details/8125970 开发环境:Eclipse + Tomcat + ExtJS6.0 工程目录结 ...