xiao1star2025-07-31文章来源:SecHub网络安全社区
进入小程序首页是一个绑卡的功能,我们随便输入然后抓包查看
抓包之后可以看到这个页面的url路径,以及相关的参数信息
接着利用工具,前面上篇文章已经说了如何获取网站反编译的代码,这里就不多说了,如果不会抓包也请看上篇文章
然后我们就全局搜索wxService
,然后确定指定路径的代码后,搜索sign
我们可以看到在这里的sign是加密的,openId
在这段代码上是空的,我们并不知道其是不是一个固定值
我们发送两个请求参数值不同的请求去一探究竟,可以看到我们的openId
是一个固定值,而sign
是一个变值,我们现在就分析下sign的加密
我们打开动调工具的cmd窗口,运行WechatOpenDevTools-Python.exe -x
,开始动调,还像之前一样去代码中一个个搜索查找
接着找到目标代码后我们在这里打上断点,我们可以看到a
的值为各个参数然后加上key=Hdgk180925BeijingSportUniversity
,然后进行md5加密之后给到sign
这就是这个加密过程
现在我们测试一下
formid=&idno=111&idserial=1111&openId=oNWJZ5ORsyty64JkrPCOcxRvFypY&password=1111&wx_code=044&key=Hdgk180925BeijingSportUniversity
我们直接用工具先测试一下,得到的sign值如下
接着再控制端跑一下,可以看到结果是一样的
e.md5('formid=&idno=111&idserial=1111&openId=oNWJZ5ORsyty64JkrPCOcxRvFypY&password=1111&wx_code=044&key=Hdgk180925BeijingSportUniversity').toUpperCase();
最后在burp中测试一下,可以看到我们输入的参数值是正确的,只是这个账号密码不存在
我们随便修改一下sign值,发现直接就是签名失败,也进一步证明我们的计算的sign
值是正确的
面向ai写一个python脚本,直接将如下内容以及参数值给到ai
paramsTrans: function(o) {
var t = [];
for (var n in o)
t.push(n);
t = t.sort();
for (var a = "", c = 0; c < t.length; c++)
a = a + t[c] + "=" + o[t[c]] + "&";
a += "key=Hdgk180925BeijingSportUniversity",
console.log(a);
var d = e.md5(a).toUpperCase();
return o.sign = d,
o
},
可以看到最终生成的sign
值与前面的是一样的,如果想要直接利用python发包的话,可以接着问ai即可