声明
本文章所有内容仅用于学习交流,严禁用于其他目的。文中不提供完整代码,抓包内容、敏感网址及数据接口等均已脱敏处理。严禁将相关内容用于商业用途和非法用途,否则由此产生的一切后果与作者无关。未经许可,禁止转载本文,禁止修改后二次传播。擅自使用本文讲解的技术导致的任何意外,作者概不负责。文章为原创,严禁转载。
关于sign
关键字总结
对于 sign
关键字,其生成方式一般是将接口信息、查询参数、时间戳(时间戳可能省略)以及自定义字符串(可能省略)进行拼接,然后通过 md5
或 Hmac
加密。之所以拼接自定义字符串,是为了防止仅依据经验直接用接口参数猜测加密规则。
补充:
- 拼接过程中可能涉及对参数进行排序、去重或者 URL 编码,确保生成的字符串在加密时具有唯一性。
- 有时还会加入一些额外的防篡改机制,例如使用
nonce
(一次性随机数)或salt
(盐值)增强加密的安全性。
关于逆向技巧总结
-
善用搜索:对关键字进行全局搜索,如
.sign
、sign=
、"sign"
等,通过不同形式缩小目标范围。不确定时,可全部打上断点,后续调试时取消无用断点。 -
栈跟踪:这是关键步骤。找到请求发送构造位置,通常请求头关键字、参数加密以及返回结果解密都在此处进行。
-
处理莫名参数:若请求构造时未携带某些参数,却突然出现,可能是网站开发者对请求头进行封装以减少请求时代码冗余。此时可搜索关键字
intercepter
,或许能有收获。
补充:
- 检查 API 文档:如果有相关的 API 文档,有时可以帮助快速了解请求参数的构成,减少逆向工作量。
- 逆向工具:使用如 Fiddler、Wireshark 等抓包工具,能够捕捉 HTTP 请求及响应,帮助更好地理解
sign
的构造方式,特别是加密前的数据内容。
实战演练
-
全局搜索关键字:在代码中全局搜索关键字
x-serverless-sign
,找出所有可能位置并打上断点,方便后续调试。 -
定位生成函数:找到
x-serverless-sign
的生成函数,进入函数内部并打上断点继续调试。发现其由字符串加上一个时间戳组成,但不清楚具体处理方法,继续深入函数内部。 -
确定加密方式:看到
md5
关键字,基本可确定加密方式。 -
对比结果:与在线
MD5
结果进行对比。
补充说明:
- 在分析
sign
签名的生成时,除了常见的md5
和HMAC
加密方式外,也有一些接口可能会使用更复杂的加密方法,如 RSA 或 AES 加密,尤其是在涉及更高安全性的场景中。因此,逆向分析时需要注意加密方式的多样性。 - 下期内容 爬虫框架设计考虑的问题,或者ob混淆。