最近玩了一个比较火的微信小程序,消灭病毒。
游戏没有充值的地方,想要升级金币就得不停的看广告攒金币,刷关卡。
后来看到X宝有卖消灭病毒刷金币的,只需要用户ID号就可以,就尝试自己试试。
首先从抓包着手,我比较习惯用fiddler抓包。尝试模拟器上配置代理抓包,结果模拟器用不了。
没办法就用手机链接代理抓。
port就是安装证书时候的端口,保持手机和开fiddler的电脑在同一个网络中。查看电脑的IP地址。在手机的WiFi选项中设置代理电脑IP和端口。此时fiddler已经可以抓到手机中的http数据包了 。
如果需要抓https的数据包,还需要在手机浏览器中输入 " IP地址:8888 "
选择第二个 ,点击下载证书,然后安装好证书就可以抓https的数据包了。
进入正题
用手机抓包,抓到微信进入小程序后的数据包。
分析得出这个包是向服务器提交用户数据的数据包,其中有本地储存的用户信息,包括关卡,金币,砖石,体力等数据。一起发送给服务器了。其中的sign参数判断是用来校验合法性的,uid就是用户ID判断某宝的刷金币点就是在这里。尝试直接重放数据包更改用户ID发现服务器验证并没有通过,猜测数据经过加密放在sign参数中校验。需要找到加密sign的算法。
首先反编译小程序
找到疑似sign加密的算法
这个js看的有点绕,实在不确定是那一块进行的sign加密,就把疑似的地方dump下来直接去验证。
最后找到sign的加密算法。可以看到是用提交数据的全部内容+openid+wx_appid(这个可以不变)+wx_secret(也可以不变)生成的新sign,然后通过post请求 带上原来的数据,加上生成的sign发送出去。尝试发送,返回code:0表示成功了。
之后删除小程序 ,重新进入小程序 ,发现数据已经刷上了(为的是防止本地有数据默认进入小程序前提交到服务器,就会覆盖掉已经刷好的数据)
至此已经实现了想要的目的。
作者:WHITE
点这里留言~
来源:Ms08067安全实验室
领取专属 10元无门槛券
私享最新 技术干货