burp suite 插件编写-基础

news2024/11/25 13:58:21

文章目录

  • 前言
  • 一、插件的官方文档
  • 二、Montoya API jar包结构
  • 三、HTTP 处理程序
    • 小结
  • 四、代码示例


前言

burp插件入门。入门,我们大概有一个框架,心里不再有怎么做,为什么可以这么做的疑问。现在就要更具体的来回答“怎么做”这个问题。我们通过官方的文档,一步一步实现一个可以处理HTTP数据包的小扩展。

一、插件的官方文档

从官方发的documentation跳转到Montoya API JavaDoc
在这里插入图片描述
跳转到MontoyaApi接口,看接口的描述::

Burp Suite 使用此接口将一组方法传递给extensions,这些extensions可在Burp中执行各种操作。当加载扩展时,Burp调用它的BurpExtension.initialize(MontoyaApi)方法并传递一个MontoyaApi接口的实例。然后,扩展可以根据需要调用该接口的方法,以扩展Burp的功能。

意思就是说,我们要写一个BurpExtension类,实现initialize(MontoyaApi)方法,在该方法里面可以写我们的插件代码了。MontoyaApi接口的一个对象是Burp Suite传递过来的,我们通过该对象(调用对象方法)就可以访问Burp的共能了。我们再点进BurpExtension类
在这里插入图片描述
看到,BurpExtension是一个接口,所以我们要编写一个类实现该接口,再通过上面MontoyaApi接口的一个实例对象,调用Burp的功能。
现在,就有了我们的基本代码框架了

  • 实现BurpExtension接口
  • 调用MontoyaApi实例的方法
// 导入两个最基本的接口
import burp.api.montoya.BurpExtension;
import burp.api.montoya.MontoyaApi;

import burp.api.montoya.logging.Logging;

//新建一个类,实现BurpExtension接口
public class HelloWorld implements BurpExtension {
//实现initialize(MontoyaApi api)方法,其中 api对象 是调用这个对象的对象(Burp主程序)传过来的
    @Override
    public void initialize(MontoyaApi api) {
// 利用api对象访问Burp提供的功能
        // set extension name
        api.extension().setName("Hello montoya extension");

        Logging logging = api.logging();

        // write a message to our output stream
        logging.logToOutput("Hello output.");

        // write a message to our error stream
        logging.logToError("Hello error.");
    }
}

那之后的事情就明确了:

  • 我们想要实现什么功能 ----> 编写我们的逻辑代码
  • 实现功能需要Burp的支撑 ----> MontoyaApi 接口中的方法

二、Montoya API jar包结构

解压Montoya API 的jar包,我们之前导入的BurpExtension接口,就是对应下图中BurpExtension.class,其目录就为burp > api > montoya。下面还有一个MontoyaApi接口,就是我们主要使用的方法集合。各个文件夹内也是各种类和接口的定义,每个文件夹对应burp里面的一个工具/模块接口。
在这里插入图片描述

三、HTTP 处理程序

    到目前为止,我们还是很难去写出一个有用的扩展,或者说,我们还是无从下手。我们不了解MontoyaApi对象,不了解其中的使用过程,所以总感觉摸不着头脑。所以多看例子、官方文档、多写一些小demo,熟悉其中的对象调用流程、方法,之后才会有“这就是Bp插件”的感觉,才能体会到面向对象、面向接口的编程思想。

    burp的核心是能够在 Burp 工具之间传递 HTTP 请求以执行特定任务的能力,现在我们要编写自己的工具,那么首先就需要获取到burp拦截或记录的HTTP请求。怎么获取?我们说过: 通过MontoyaApi的实例来访问Burp中的功能

通过下面的文档,我们知道需要通过MontoyaApi实例调用http()方法,通过返回的HTTP实例访问HTTP请求和响应。
在这里插入图片描述

调用该方法,返会一个Http接口的实现,也就是一个实现了Http接口的类的对象。点进Http接口
在这里插入图片描述

进去之后,发现要注册一个handler来处理http数据包,点进HTTPHandler
在这里插入图片描述
根据描述,我们还需要实现HttpHandler这个接口,并调用之前的http()方法注册这个handler,之后就可以通过handler来对数据包进行操作了。我们有发现,HttpHandler接口中只有两个方法,但是该方法中传入了HttpRequestToBeSentHttpResponseReceived的两个对象,那大概我们就可通过这两个对象操作HTTP数据包,点进去。
在这里插入图片描述

小结

在这里插入图片描述

  • 实现BurpExtension接口,调用http()创建HTTP实例
  • 实现HtpHandler接口,重写其中的方法,Burp主程序会分别传入HttpRequestToBeSentHttpRespnseReceived2个实例,利用这2个实例可以对流经Burp的数据表做一定的操作
  • 调用HTTP实例注册HttpHandler,注册过后的handler才会被调用

四、代码示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于C#编程建立泛型Vector数据类型及对应处理方法

目录 一、简介 二、方法 2.1 建立Vector类 2.2 Vector成员 2.3 Vector属性 2.4 Vector方法 2.4.1 构造函数 2.4.2 Vector元素操作方法 2.4.3 Vector 运算 三、调用方法 3.1 方法 3.1.1 Append 3.1.2 this[] 3.1.3 Insert 3.1.4 DelLen 3.1.5 FindNumber 3.1.6 …

PHP快速入门04-前后端数据交互与文件上传

文章目录 前言前后端数据交互与文件上传前后端数据交互 $_GET $_POST文件上传 总结 前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 前后端数据交互与文件上传 前后端数据交互 $_GET $_POST 他们都是超全局变量。它们用于从HTTP请求中获取数据&#xff0…

除了学历,你更需要有能力

遥想当年,家里培养出一个大学生,是多荣耀的事!可现今却处于一个比较尴尬的状态。 为什么大学生贬值得这么厉害?其实大学生之所以会不值钱不外乎三大原因:量大、与企业需求不匹配、质量差。 高校扩招下,大…

OpenAI最新官方ChatGPT聊天插件接口《接入插件快速开始》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(二)(附源码)

Getting started 快速开始 前言Introduction 导言Plugin manifest 插件清单OpenAPI definition OpenAPI定义Running a plugin 运行插件Setup a local proxy of your public API 设置公共API的本地代理 Writing descriptions 书写描述Best practices Debugging 排除故障其它资料…

【Android】popup windows 的使用方式 和 遇到不显示的坑

背景 在项目开发过程中有一个需求就是点击一个问号icon 弹出相关提示信息在下面,那么就得对这个做适配了。 计划采用popupWindow 实现: 参考 实现 基本的套路就是写一个xml对应的布局,然后在java 层使用即可。 特别注意的是该xml布局要慎…

ubuntu输入法问题汇总

Xfce4桌面环境输入法 Ubuntu20.04、ubuntu21.04中安装xfce4桌面环境,自带中文输入法; 原生xubuntu20.04中文输入法问题解决办法: 更新语言支持失败的话,终端键入:sudo apt-get install cmake qt5-default qtcreator…

网络安全——传输层安全协议(3)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.SSL密钥更改协议 二.SSL告警协议 关闭报警 错误报警 三.SSL协议安全性…

软件测试测试开发技能

从事软件测试许多年,想必很多人都有感到迷茫不知所措的时候,人生的十字路口有很多,该如何抉择呢?有人成功转型,QA、项目管理、配置管理。当然还有技术型,性能测试、自动化测试、测试开发,而想要…

爬虫JS逆向思路-hook钩子

网络上几千块都学不到的JS逆向思路这里全都有👏🏻👏🏻👏🏻 本系列持续更新中,三连关注不迷路👌🏻 干货满满不看后悔👍👍👍 &…

连续3天3场分享,KubeVela@KubeCon EU 2023 抢鲜看!

自从 2019 年 Open Application Model 诞生以来,KubeVela 已经经历了几十个版本的变化,并向现代应用程序交付先进功能的方向不断发展。最近,KubeVela 完成了向 CNCF 孵化项目的晋升,标志着社区的发展来到一个新的里程碑。今天&…

有了MySQL,为什么还要有NoSQL

🏆今日学习目标: 🍀MySQL和NoSQL的区别 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪…

PYQT5学习笔记02——程序基本结构之面向对象版本

我们之前写的代码耦合性比较高,复用性不高,这是面向过程编程的缺点。我们可以把程序基本结构设计成面向对象的版本,把 设置控件这部分内容封装到一个类中。 比如这个是我们的窗口,红色的矩形是相同的菜单控件,既然是一…

研报精选230420

目录 【行业230420浙商证券】卫浴行业深度报告:智能卫浴新变局,国货崛起正当时 【行业230420平安证券】氢能全景图(上)制氢篇:商业模式起步,绿氢初试锋芒 【行业230420天风证券】建筑装饰行业深度研究&…

InstructGPT:Training language models to follow instrcutions with human feedback

InstructGPT:Training language models to follow instrcutions with human feedback 介绍模型数据集TaskHuman data collectionmodel 实验结果参考 介绍 现在LLM可以被prompt来完成一系列的下游任务,然而这些模型也总会产生一些用户不想要的结果&#…

ESP32 WiFi扫描、WiFi通道查询

ESP32WiFi扫描程序 代码解决什么问题? 扫描周围WiFi并识别指定WiFi名称的WiFi通道(为了ESP32的esp-now协议正常通信)。 这跟ESP32 now有什么关系? ESP32使用NOW协议进行通信时,要求参与通信的设备必须处于同一物理…

ASEMI代理ADI亚德诺AD8603AUJZ-REEL7车规级芯片

编辑-Z AD8603AUJZ-REEL7芯片参数: 型号:AD8603AUJZ-REEL7 偏移电压:12μV 偏移电压漂移:1μV/C 输入偏置电流:0.2 pA 输入失调电流:0.1 pA 输入电压范围:–0.3 to 5.2V 输入电容&#…

Win10+VS2019安装vcpkg

vcpkg是一个C的包管理器。类似Python中的pip。安装后可以直接通过命令下载一些C的包,省的自己编译配路径。安装后的包都被vcpkg统一保存,统一配置路径。VS中哪个项目需要,就将其配置到某个项目中,当然也可以全局配置。 1、下载vc…

Node 04-http模块

HTTP 协议 概念 HTTP(hypertext transport protocol)协议;中文叫 超文本传输协议 是一种基于TCP/IP的应用层通信协议 这个协议详细规定了 浏览器 和 万维网 服务器 之间互相通信的规则 协议中主要规定了两个方面的内容: 客户端&#xff1…

Coovally再升级!基于CV大模型的智能标注解放你的双手

近日,随着SAM大模型的横空出世,“分割一切”成为可能,基于CV大模型的标注技术受到瞩目。 SAM分割示例 SAM大模型 Meta 在论文中发布了名为 Segment Anything Model (SAM)的新模型,“SAM 已经学会了关于物体的一般概念&#xff0c…

Hbase1.1:HBase官网、HBase定义、HBase结构、HBase依赖框架、HBase整合框架

这里写自定义目录标题 HBase官网HBase特点:大HBase定义HBase结构HBase依赖框架hadoop HBase整合框架PhoenixHive HBase官网 Hbase官网地址 HBase是Hadoop database,一个分布式、可扩展的大数据存储。 当您需要对大数据进行随机、实时读/写访问时&…