微信小程序逆向二--实战分析

xiao1star2025-07-31文章来源:SecHub网络安全社区


实战分析–面向ai写加密脚本

进入小程序首页是一个绑卡的功能,我们随便输入然后抓包查看

20250625082332174.png

抓包之后可以看到这个页面的url路径,以及相关的参数信息

20250625082536936.png

接着利用工具,前面上篇文章已经说了如何获取网站反编译的代码,这里就不多说了,如果不会抓包也请看上篇文章

然后我们就全局搜索wxService,然后确定指定路径的代码后,搜索sign

20250625082854133.png

20250625082924881.png

我们可以看到在这里的sign是加密的,openId在这段代码上是空的,我们并不知道其是不是一个固定值

20250625083029967.png

我们发送两个请求参数值不同的请求去一探究竟,可以看到我们的openId是一个固定值,而sign是一个变值,我们现在就分析下sign的加密

20250625083326949.png

我们打开动调工具的cmd窗口,运行WechatOpenDevTools-Python.exe -x,开始动调,还像之前一样去代码中一个个搜索查找

20250625090136102.png

接着找到目标代码后我们在这里打上断点,我们可以看到a的值为各个参数然后加上key=Hdgk180925BeijingSportUniversity,然后进行md5加密之后给到sign这就是这个加密过程

20250625090136102.png

现在我们测试一下

formid=&idno=111&idserial=1111&openId=oNWJZ5ORsyty64JkrPCOcxRvFypY&password=1111&wx_code=044&key=Hdgk180925BeijingSportUniversity

我们直接用工具先测试一下,得到的sign值如下

20250625092602893.png

接着再控制端跑一下,可以看到结果是一样的

e.md5('formid=&idno=111&idserial=1111&openId=oNWJZ5ORsyty64JkrPCOcxRvFypY&password=1111&wx_code=044&key=Hdgk180925BeijingSportUniversity').toUpperCase();

20250625092602893.png

最后在burp中测试一下,可以看到我们输入的参数值是正确的,只是这个账号密码不存在

20250625092602893.png

我们随便修改一下sign值,发现直接就是签名失败,也进一步证明我们的计算的sign值是正确的

20250625092936771.png

面向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即可

20250625094151083.png