用途:解决“请求无法重放”的阻塞问题。当 Burp Repeater 返回 401 invalid signature 或 403 bot detected,而浏览器/App 正常时,本技能帮助还原客户端签名逻辑,以便在客户端之外复现请求,进而测试签名背后的 API。签名本身不是漏洞,真正的收益来自进入后发现的越权或业务逻辑问题。
核心原则是“数据包优先”:先抓真实请求并原样重放,若成功则无需逆向;再延迟重放检查时效;再改动一个非签名字段,若仍成功说明签名未覆盖该字段,可直接篡改。只有重放确实失败才进入逆向。
阶段主线:定位→还原→运行时→验证→重放。定位阶段从签名写入点反向追踪 writer←builder←entry←source,可用 DevTools 的 XHR/fetch 断点、全局搜索字段名、DOM 断点。还原阶段只剥离阻碍阅读的那一层(webpack、字符串数组混淆、Worker、wasm、JSVMP),优先黑盒复用页面自身签名函数而非反编译。运行时阶段找出浏览器执行与本地执行的首次分歧。验证阶段用捕获的输入比对签名输出,重点核对 JSON 键顺序、分隔符与拼接顺序。重放阶段用 Python 构造可批量变异的请求。
输入分类决定可行性:timestamp、nonce 可自行生成;deviceId 可固定;请求体若被签名覆盖,则可改体后重新签名以测试越权;密钥若硬编码在 JS/APK 中即可离线伪造任意请求。
反爬令牌(Akamai、DataDome、PerimeterX 等)建议复用而非完整逆向:抓取一个有效令牌在有效期内重放,或用 Selenium/Playwright 无头浏览器桥接生成令牌。完整逆向成本极高,通常超出单个赏金项目范围。
可提交项包括:签名缺少时效导致可无限重放、签名未覆盖端点或载荷导致请求伪造、密钥硬编码、通过签名进入后发现的 IDOR/BOLA/批量赋值、令牌跨用户绑定失效。仅“我逆向了签名算法”本身不可提交。
工具:Burp/mitmproxy/DevTools 抓包,DevTools 断点与美化,wget+grep 或 secrets-hunt 搜索密钥,LinkFinder/jsluice 找隐藏端点,Python requests 重放,Selenium/Playwright 生成令牌,移动端用 apktool+jadx 与 objection/frida。
限制:资料未提供具体安装命令、收费信息或平台支持范围;反爬 SDK 完整逆向成本高,通常不现实。