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());
}
}
}
获取到的数据结构如下
可以对raw_query
base64解码后看到查询时的前缀。
插件配置保存
代码实现
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);
}
}