微信小程序签名逆向分析
本帖最后由 Aur0ra 于 2023-4-16 23:03 编辑前不久在渗透小程序的时候,发现了签名的逻辑,于是:
二话不说,先拖源码:
[*]在PC端找到对应的__APP__主包
[*]用https://github.com/BlackTrace/pc_wxapkg_decrypt进行解密后,再用wxUnpack进行解包即可
阅读源码,全局搜索enc关键字,或找路由附加的逻辑即可。找到相关的签名逻辑:
整体就是先将参数按照参数名进行排序后,进行拼接,然后再加上 cmscms 字符串,最后调用MD5进行处理即可。
后续就是一贯的思路了,不作赘述。
(整体难度一般。大体和web 前端js加密一致,关键还是先获取到源码,定位到参数加密逻辑) Aur0ra 发表于 2023-4-20 15:13
看RSA的加密是固定的还是动态的,如果是动态的那可能只能就没办法了
应该不是动态的吧 这个score明文值是800,请求可以重放,加密模块的云函数数据也就传了这个值。。
请求接口数据是这三个:
openid = xxxxxxxxxx
score = CgaOyx7wNzWpEw5ByD6YgV0FXAtj7M1z06hsw2xm0ZFgt4pILQwjhWS1BXxe89HF/lLlTfiT3cggQbemJc+kSU/V9BjuaBzsr068YjhSPQ9wlEBSB6H08hwqyYThW7HQKc0TgNu8gES9AjAo9LQBcSR8Vs6zCKbL682vs3mQnJ17AbTaDHp2a6ccZwDGdnK8b66hXr0g4/4bogAagcGZ0JFVkMEV1etNtmKCLvzm2Bra4ogVOXK2Mg/6fW+ZfAH/eorOmbURpw2fQAtWPauIRJECB7CP0xhqdh8205TtlvyiueahddF1gBC4CVdSU3aJg/b05zoyjo2siwvanhPLoA==
tempId=null
score加密模块:
cloudRsa: function cloudRsa(e, t) {
g.iswxgame() && (wx.cloud.init({
traceUser: !0
}), wx.cloud.callFunction({
name: "rsa",
data: {
score: e
},
complete: function complete(e) {
t(e.result.encrypted);
}
}));
}
想问问佬有没有什么方法指点一二 本帖最后由 Aur0ra 于 2023-4-20 17:34 编辑
OrzzCatt 发表于 2023-4-20 14:46
大佬 最近看一个小程序反编译的发现有个参数调了云函数(rsa)加密的,像这种情况有没有什么处理思路,让小 ...
看RSA的加密是固定的还是动态的,如果是动态的就只能每次修改参数并发送请求前先获取动态的签名密钥进行签名。相当于每次需要进行两次请求:1. 获取动态密钥并对修改后的参数进行签名 2. 发送附带签名的请求 学习一下,感谢分享 学习一下,感谢分享 学习了,签名破解后,就能做很多事了 感谢大佬分享,学习之事任重而道远啊 大佬,用的抓包工具是什么
厉害,学习的榜样 学习学习 签名破解之后能做什么呢? 学习的榜样