1.使用关键字查找请求是否存在

2.使用postman请求,并尝试修改/删除参数

3.发现body体中的请求信息修改会出现,"sign验证失败: 参数签名错误"

4.header中的x-sign参数去掉会出现"sign验证失败: 缺少sign",初步判断此参数使用body体进行加密,尝试破解

5.查看堆栈信息,我的习惯是查看最近的一个request

6.打好断点,翻页查看进入断点时内存信息,发现请求参数都在config里,但headers中并未发现x_sign,判断x_sign此时并未生成,继续执行跟断点

7.经过N多无用代码后,终于发现 addSignToRequestConfig(config, { clientId }) 这行执行后,config中headers出现X_Sign


8.进入方法内部跟进,确认x_sign生成关键方法,由getParamsHash方法使用axiosRequestConfig先生成一段加密参数,再使用makeJwt生成x_sign

9.查看getParamsHash方法,该方法使用 uri + queryString + body 拼接后进行md5加密

10.使用md5工具进行测试,确认加密后与网站生成一致,现在第一个加密参数已经解决


11.查看makeJwt方法,传入参数为第一个加密和undefined,使用jwtLib.jws.JWS.sign方法传入四个进行加密

12.copy整个加密文件

13.使用网站生成好的参数进行测试

14.生成参数与网站一致

15.补充环境,改写一些固定参数的方法,至此js部分x_sign参数破解完成

16.python代码

本文详细记录了一位开发者在使用POSTMAN调试过程中,逐步破解网站X-Sign签名验证的过程,涉及MD5加密、JWT签名生成及参数加密策略,最终成功模拟真实请求。
2144

被折叠的 条评论
为什么被折叠?



