最近这几天在写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插件开发的更多相关文章

  1. Burp插件开发——环境配置

    最近打算开发个Burp插件,从网上各种地找资料学习.第一步就应该是环境配置,请见下文. (其实最重要的前提是你已经安装了Burp,否则下面的所有内容都是无稽之谈了. https://pan.baidu ...

  2. 如何写一个 Burp 插件

    Burp 是 Web 安全测试中不可或缺的神器.每一个师傅的电脑里面应该都有一个 Burp.同时 Burp 和很多其他神器一样,它也支持插件.但是目前总体来说网上 Burp 插件开发的资料不是特别特别 ...

  3. 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)

    基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...

  4. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  5. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  6. Vue插件开发入门

    相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...

  7. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  8. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  9. [Tool] Open Live Writer插件开发

    一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...

随机推荐

  1. 微信小程序之----组件

    1.view 把文档分割为独立的.不同的部分. view组件类似于html中的div标签,默认为块级元素,独占一行,可以通过设置display:inline-block改为行级元素. view.wxm ...

  2. RabbitMQ消息队列(九):Publisher的消息确认机制

    在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...

  3. C# TPL学习

    程序Ⅰ:通过Task类创建新线程 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...

  4. ios framework 开发

    ios framework 开发 之 参考 ios framework 开发 之 实战 iOS workspace 依次编译多个工程

  5. 一分钟完成MySQL5.7安装部署

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://suifu.blog.51cto.com/9167728/1855415 Part ...

  6. Dictionary使用(转)

    1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib)2.描述 1).从一组键(Key)到一组值(Value)的 ...

  7. 正确的 Composer 扩展包安装方法

    问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 com ...

  8. Add Strings Leetcode

    Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2 ...

  9. js原生写的微博留言板有angularjs效果

    1.HTML: <!DOCTYPE html><html><head lang="en">    <meta charset=" ...

  10. iOS 程序初始一个带导航栏的视图

    @synthesize window = _window; @synthesize rootViewController = _rootViewController; - (BOOL)applicat ...