【BurpSuite】插件开发学习之编译/仿写/常见问题

前言

burp插件以前开始也是从python栈开始,现在从java开始看,从同行优秀的插件开始看,然后理解之后试着自己改进。关于burp插件,学习分为三步。

第一步:环境配置
第二步:看代码
第三步:写代码。

原文件编译

先把编译走一遍,能自己搞出一个jar出来

第一步:导入代码

方法1: open-import 导入代码目录
方法2: 拖入build.gradle即可

第二步:编译成JAR包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
output就有jar包了。jar包可以导入burpsuite
在这里插入图片描述
所以这里就将改代码-新jar包-新插件使用的过程完成了。

20220820更

好久没来了,找到个更好地打包jar的方法,起因是https://blog.csdn.net/xiru9972/article/details/126440943

这个kotlin打包成jar用上面的路子走不通。最后发现只需要在工程下面./gradlew build即可。
https://github.com/PortSwigger/log4shell-scanner
在这里插入图片描述

代码阅读

编译完成之后就是看代码了
https://github.com/c0ny1/sqlmap4burp-plus-plus
目录结构
在这里插入图片描述
首先是burpextender
启动的时候会先调用registerExtenderCallbacks。,类似于php的魔法函数


package burp;

import java.io.PrintWriter;

public class BurpExtender implements IBurpExtender {
    public static IExtensionHelpers helpers;
    public static IBurpExtenderCallbacks callbacks;
    public static PrintWriter stdout;
    public static PrintWriter stderr;

    @Override
    public void registerExtenderCallbacks(final IBurpExtenderCallbacks callbacks) {
        this.helpers = callbacks.getHelpers();
        this.callbacks = callbacks;
        this.stdout = new PrintWriter(callbacks.getStdout(),true);
        this.stderr = new PrintWriter(callbacks.getStderr(),true);

        callbacks.registerContextMenuFactory(new Menu());
        callbacks.setExtensionName(String.format("%s %s",Config.getExtenderName(),Config.getExtenderVersion()));
        stdout.println(Util.getBanner());
    }
}

然后就是Config模块,主要的功能是配置项的一些默认信息和输入信息的函数。
configDlg和GBC主要是ui设计。
然后就是menu模块,比较重要的一点是将http请求保存在临时文件中存储起来。
sqlmapstarter就是根据不同的操作系统生成指定的命令最后调用就行,看起来很容易理解。
整体结构模块化很清爽,值得学习。

代码仿写

最后一步就是去根据原代码仿写一些插件进行改造。比如dirsearch4burp,尝试加几个函数,思路是只需要获取对应的url即可
在Config增加两个函数

    public static void setRequstUrl(String requestUrl) 
    public static String getRequsturl() 

Util增加一个函数

insertFuzzUrl

然后sqlmapstarter调用insertFuzzUrl函数即可,最后就能实现repeat直接扫目录
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里有个问题是dirmap的config文件加载问题,跨目录竟然不行,还得再看看dirmap的源码才能解决。

20210210更

dirmap的config路径解决思路有两个

  1. 更改config文件路径变为可输入模式
  2. 写死config路径,本地自己用。

QA速查

错误1 :程序包xxx不存在

如果直接编译会提示两个错误去这里下载两个lib
在这里插入图片描述
下载&导入
在这里插入图片描述

错误2: classnotfound

20210210更

编译可能会产生classnotfound的一些问题,主要目的在于备忘,主要关注这几个地方
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

后话

其实有很多好用的脚本都可以集成到burp里面,还得慢慢看,后续会慢慢更新。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值