跳到主要内容

杂项

Burp Collaborator 交互

代码实现

fetch只会获取到最新的结果,如果结果之前被fetch过,下一次fetch的时候不会重复出现。

package burp;

import java.util.List;

public class BurpExtender implements IBurpExtender {
// 回调对象
private IBurpExtenderCallbacks callbacks;
// 辅助类,一般用于辅助分析数据包结构
private IExtensionHelpers helpers;

// 实现 IBurpExtender 接口函数
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
// 设置插件名字
callbacks.setExtensionName("Demo");

// callbacks到处都要用,搞成类变量
this.callbacks = callbacks;

// 辅助类,一般用于辅助分析数据包结构,类变量方便其他函数调用
helpers = callbacks.getHelpers();

// Collaborator
IBurpCollaboratorClientContext burpCollaboratorClientContext = callbacks.createBurpCollaboratorClientContext();
// 获取到的域名
String subdomain = burpCollaboratorClientContext.generatePayload(true);
// fetch 获取最新结果
List<IBurpCollaboratorInteraction> iBurpCollaboratorInteractions = burpCollaboratorClientContext.fetchAllCollaboratorInteractions();
// 循环输出结果
for (IBurpCollaboratorInteraction c: iBurpCollaboratorInteractions) {
callbacks.printOutput(c.getProperties().toString());
}
}
}

获取到的数据结构如下

image-20240927上午82324137

可以对raw_query base64解码后看到查询时的前缀。

image-20240927上午82247244

插件配置保存

代码实现

package burp;

import java.util.List;

public class BurpExtender implements IBurpExtender {
// 回调对象
private IBurpExtenderCallbacks callbacks;
// 辅助类,一般用于辅助分析数据包结构
private IExtensionHelpers helpers;

// 实现 IBurpExtender 接口函数
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
// 设置插件名字
callbacks.setExtensionName("Demo");

// callbacks到处都要用,搞成类变量
this.callbacks = callbacks;

// 辅助类,一般用于辅助分析数据包结构,类变量方便其他函数调用
helpers = callbacks.getHelpers();

// 保存到临时文件中
ITempFile iTempFile = callbacks.saveToTempFile("aaa".getBytes());
callbacks.printOutput(helpers.bytesToString(iTempFile.getBuffer()));

// 保存到配置文件
callbacks.saveExtensionSetting("testforme", "d4m1ts");
// 获取配置
String testforme = callbacks.loadExtensionSetting("testforme");
callbacks.printOutput(testforme);
}
}

image-20240927上午83216584