本文转自公众号:https://xz.aliyun.com/t/8071
0x00 前言
在一次授权渗透测试中,应用在前端使用sql语句拼接方式传送参数,很明显存在sql注入,提交漏洞后,用户大概不想重构项目,于是将前端参数传输前均进行加密,但是通过JS找到加密密钥后,结合py脚本还是注入了;后续用户再次升级将设计加密的JS也加密混淆了,不过还有办法找到密钥,借此分享,过程中踩坑绕弯,欢迎大表哥们交流指导。
0x01 第一次常规测试
如下图点击功能抓数据包,可以发现参数中明显有SQL语句,后使用1=1 和 1=2 确定了注入点,但是没有返回值,只能盲注了。
py写个脚本,简单爆破了一下数据库长度、数据库名等信息
0x02 第二次参数使用SM4加密
接到复测通知,看了下系统,发现参数被加密了,如下图
这里找加密方法的图没截,大概就是找到对应的ajax方法,可以看到md5_bean参数的生成通过base.js的encryptData_ECB方法生成,打开base.js清晰可见sm4字样以及secretkey和iv,如下图