burp插件开发--基础篇

最近这几天在写burp的插件,有一些写burp插件的流程和误区想跟大家分享一下:

第一步,打开burpsuit,打开extender页面,并将burp中自带的api代码导出,方便后续的代码开发;

第二步,使用idea创建一个java项目并将上一步导出的api代码导入到该项目中;

第三步,在导入的项目中创建一个叫BurpExtender.java的类并Implements  IBurpExtender这个类,注意,必须叫这个名字,否则burp会识别不到此插件的存在,如上图;

第四步,在BurpExtender中书写,你想要的代码;

1. 首先需要定义全局变量,如下图:

public class BurpExtender implements IBurpExtender {

 

   IExtensionHelpers helpers;

    PrintWriterstdout;

   IBurpExtenderCallbacks mCallback;

2. mCallback 此变量是在书写burp插件中最必不可少的变量,如果你需要调用你所导出的api的函数的话,必须要用mCallback先注册一下,如下;

 

 @Override

    public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {

        // set our extension name

        mCallback = callbacks;

       mCallback.setExtensionName("Active Scanextension");//插件名字

        //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() 常用辅助方法

        // obtainour output and error streams

        stdout = new PrintWriter(callbacks.getStdout(), true);

        PrintWriterstderr = newPrintWriter(callbacks.getStderr(), true);

 

        // write a message to our output stream

        stdout.println("Hellooutput new ");

 

    }

3. 上述函数为burp中自带函数,并在加载插件时自动调用并运行的函数,同时注册的时候,还要实现相应的interface类;

4. helps变量在实现时应使用mCallBack此变量进行初始化;

 

helpers = mCallback.getHelpers();

//以下为简单的helps调用

//methodburp捕捉的请求所发送的method,如getpostoptions

String method =helpers.analyzeRequest(baseRequestResponse).getMethod();

//urlburp捕捉到的请求所发送的url

String url =helpers.analyzeRequest(baseRequestResponse).getUrl().toString();

 

5. 其中helps包含你需要burp此软件传入给你的任意变量和之前burp所具有的功能,如下图,举例getRequestParameter代表获取传入的request变量;

6.stdout代表需要在burp自带的插件页面上打印出来的东西,如下图;

//初始化stdout

        stdout = new PrintWriter(callbacks.getStdout(), true);

        PrintWriterstderr = newPrintWriter(callbacks.getStderr(), true);

        // write a message to our output stream

        stdout.println("Hellooutput new ");

 

7.在下图标红的地方打印出来你需要打印出的东西如log、error,同时burp具有专门打印错误的函数,使用方法和stdout相同

 

下一篇文章讲如何写真正的burp插件,并实现burp发送邮件功能

posted @ 2017-04-10 14:47  ermei  阅读(3547)  评论(0编辑  收藏  举报