• 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发送邮件功能

  • 相关阅读:
    C# 手机号码隐藏中间四位
    mysql-8.0.20-winx64 绿色版安装教程
    C# 钩子函数使用
    C#反射机制学习
    docker学习笔记二
    从主机A得到id_rsa.pub文件,在主机B创建用户danny加入该文件,实现主机A免密登录主机B
    关于mysql远程登录问题
    playframework 编译打包过程失败
    docker学习笔记一
    记一次tomcat7.0版本启动项目失败问题
  • 原文地址:https://www.cnblogs.com/ermei/p/6689006.html
Copyright © 2020-2023  润新知