-
Notifications
You must be signed in to change notification settings - Fork 59
FAQ
- 项目采用Burp
Montoya API
开发,Burp版本不低于v2023.10.3.7
- Release中对应版本的注意事项
- Burp 增加启动参数 -Dfile.encoding=utf-8
- 删除 work dir 后在 Burp 重新导入插件
- 缺少jython:请在Burp的Java environment(
Settings -> Extensions
)配置一个文件夹,并将jython-standalone-xxx.jar
放在该文件夹。Download,并重新导入下插件
python:使用 jython支持 python 代码的运行,和你本地环境有差异或存在兼容性问题
如果有必须使用本地环境的需求,请使用 http 的方案,它们会提供更具兼容性的跨语言方案
表达式是用来判断一个请求是否需要被处理,如果出现该情况请检查表达式。注意 request.host 的 value 不需要带端口。
右键请求找到解密按钮并点击,查看是否有报错
改为ZeroBytePadding
有三种方式解决
-
直接修改本项目的源代码,自行打包
-
项目的加解密三方库是使用的bouncycastle,如果它本身支持,你可以尝试用 jython 改写
-
用 java 实现你需要的加解密算法,打成 jar 包后,放在Java environment(
Settings -> Extensions
)配置的文件夹内,就可以在 jython 的 hook 方式中引入其中的类
联动 jsrpc:可以看下 Catzilla 师傅的文章
联动 frida...:其实和 jsrpc 类似,需要将这些工具的能力转换为 http 服务,然后在 hook 脚本中利用内置的 http 客户端去请求来联动,客户端可看下方代码
联动 cdp:项目内置了 ws 客户端,可以看下方的具体实现摸索
Query
GET /?id=1 HTTP/1.1
Host: www.baidu.com
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36
Connection: close
Cache-Control: max-age=0
Form
POST / HTTP/1.1
Host: www.baidu.com
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
id=1
FormData
POST / HTTP/1.1
Host: www.baidu.com
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6vFUq2bgZwMqUgDb
Content-Length: 134
------WebKitFormBoundary6vFUq2bgZwMqUgDb
Content-Disposition: form-data; name="id"
1
------WebKitFormBoundary6vFUq2bgZwMqUgDb--
java 必须要求 burp 用 jdk 启动,并且很多对象转换的问题,淘汰是必然的
http 相对于 grpc 更易理解、简单、且局限性更少,故而淘汰 grpc
js 和 graalpy 是因为不同的跨语言方案最终都踩到了不同的坑,作者不想浪费太多的时间在这些上,因此仅保留了兼容性稍好的 jython 和更易理解的 http,这两种方式(js、graalpy)作为彩蛋保留在源码中,如果你认为这些比较好用,并且有做好踩坑的准备、更有思考的能力以及一点点剖析并解决问题的耐心,你可以修改 build.gradle -> optionalHooker
自行打包使用,但此类 issue 作者不解决
python 的 hook 方式来源于 jython/graalpy 的跨语言支持,因此如果需要使用三方包,该三方包必须能通过 jython/graalpy 解释及运行,而 jython 只支持到 python 2.7,graalpy 支持 python3.11。但同时他们都有兼容性问题,并非所有三方包都可以导入
安装对应的 python 版本,创建虚拟环境,再用 pip 安装必要的三方包,在代码编辑器中将三方包所在的文件夹配置到 sys path,如 xxx/venv/lib/python2.7/site-packages
import sys
sys.path.append("xxx/venv/lib/python2.7/site-packages")
例如 crypto-js
-
保存 https://cdn.jsdelivr.net/npm/crypto-js@4.1.1/crypto-js.js 为 crypto-js.js文件
-
在 js 引擎中执行
load('xxx/crypto-js.js');
即可加载该 js 文件,之后就可以使用其中的函数了
// 加载
load('xxx/crypto-js.js');
// 测试 crypto-js 是否可以正常工作
var hash = CryptoJS.MD5("Message");
console.log(hash.toString()); // 4c2a8fe7eaf24721cc7a9f0175115bd4
import sys
for module in sys.builtin_module_names:
print(module)
output
struct
jarray
_marshal
_bytecodetools
binascii
ucnhash
_sre
sys
cmath
itertools
jffi
operator
_py_compile
array
zipimport
_codecs
_hashlib
bz2
gc
posix
cPickle
synchronize
_random
_imp
errno
__builtin__
_csv
_json
_weakref
thread
exceptions
_ast
cStringIO
_jyio
_collections
_functools
_threading
_jythonlib
math
time
_locale