目前有两种主要思路:一种是通过前端 JS 逆向工程,还原出加密密钥和 sign 签名逻辑;另一种则是通过后端断点调试来分析请求参数。但由于这套代码无法在本地运行,我选择了第一种方案
https://jielun.site/2025/06/12/%E8%AE%B0%E4%B8%80%E6%AC%A1%E5%8A%A0%E8%A7%A3%E5%AF%86+%E7%AD%BE%E5%90%8D%E6%A0%A1%E9%AA%8C+%E7%BC%96%E5%86%99flask%E8%81%94%E5%8A%A8sqlmap%E7%9A%84%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/
接下来分析签名校验:
此处是先获取所有请求参数中的值,将其拼接成arr
注意后面有两个时间戳,两者不一致,一个是前(timerandom)一个是后(signTime)
整理得到具体步骤:
-
加密参数:将每个参数值使用AES-ECB加密(PKCS7填充)并Base64编码
-
生成签名:a. 按固定顺序拼接加密后的参数值b. 添加一前一后时间戳(timerandom)(signTime)c. 计算整个字符串的MD5d. 构造JSON字符串:{"md5": md5值, "signTime": 时间戳}e. 使用相同的AES密钥加密该JSON字符串得到签名
-
构造HTTP请求头,包含签名和其他必要字段
-
发送请求并输出响应
原文始发于微信公众号(有恒安全):渗透测试-从下载漏洞到前端加解密+签名校验拿下sql注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论