吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13700|回复: 140
收起左侧

[Web逆向] 微信小程序逆向之牛仔城游戏厅签到接口

    [复制链接]
iBaiYu 发表于 2024-4-19 12:18

智谱清言说:
大家好,今天我将为大家带来一篇关于微信小程序逆向之牛仔城签到接口逆向的技术分享。在这篇文章中,我们将一起探讨如何逆向牛仔城微信小程序的签到接口,并分析其背后的原理。

由于已经逆向成功了,现在只是重新复现。

参考贴:
技术分享|微信小程序绕过sign签名思路

使用工具:
反编译小程序工具
解密小程序源码工具
小程序包解密.rar (9.65 KB, 下载次数: 273)

这边推荐再下一个everything,方便你找到.wxapkg结尾的文件,除非你能准确知道小程序的存放路径就可以不用。打开我们的微信PC,然后登录🤣搜索【疯狂牛仔城】微信小程序



1.png
2.png

然后点开小程序,这时候进入小程序后,多点击几个功能,比如什么登录啊,我的,主页,活动和二维码都点击一下,方便让小程序把需要的文件都下载完成。
3.png

打开everything,开始我们的搜索!直接搜.wxapkg,选择修改时间-倒序,然后打开_APP_.wxapkg所在的文件夹
4.png
5.png
6.png


当然,到这一步,你可能想问,你都没和我说怎么抓签到接口啊!😅

我想说,不好意思我忘了😋

这边你再下载一个抓包工具,叫HTTP Debugger Pro,或者你有可以抓到微信小程序的抓包工具都可以用

然后,打开HTTP Debugger Pro,这是他的页面。
7.png

开始抓包,点击一下签到,然后抓到该请求。
8.png
9.png
我们可以发现,通过抓包,发现有个doGrow,经过翻译,可以大致推断他就是签到接口
10.png


通过接口response返回,可以看到request发送了如下json
{
   "member_no" : 9999,
   "sign" : "2675c58926fe37d01a39874b6e210486",
   "store_no" : 12,
   "time" : "20240418200528",
   "type" : 12
}


通过询问GPT,可以得知:
member_no:表示会员编号,这里的值为44246,可能是指一个特定会员的唯一识别码。
sign:通常表示一个签名或者校验码,用于验证数据的完整性和真实性。这里的值“2675c58926fe37d01a39874b6e210486”可能是一个通过特定算法生成的签名。
store_no:表示商店编号,这里的值为12,可能指的是特定商店的编号。
time:表示时间,这里的值“20240418200528”看起来是一个时间戳,格式可能是YYYYMMDDHHMMSS,即2024年4月18日20点05分28秒。
type:表示类型,这里的值为12,具体指什么类型需要根据上下文来判断,比如可能是指交易类型、消息类型等。

11.png

并且可以看到,返回了如下json:



{
   "data" : null,
   "errorCode" : 0,
   "errorMessage" : "领取成功",
   "filename" : null,
   "success" : true,
   "url" : null
}

尝试重发请求,修改time值为20240419200528 原time值为:20240418200528



12.png
13.png

使用APIFOX发送请求可以发现,只修改time会出现416错误返回:

{
    "Message": "出现错误。"
}


14.png

由此可以判断,只修改time是没法进行签到的,需要一同把sign修改了,可是我们该如何得到sign值呢?
通过长度判断,可以发现sign是md5的32位长度,猜测是md5加盐了

15.png

接下来开始解密__APP__.wxapkg

打开UnpackMiniApp.exe


1.png

打开之前找到的_APP_.wxapkg的所在的文件路径
16.png

17.png

然后打开\wxpack\目录

找到如下文件wx28881238baa06aeb.wxapkg



18.png
19.png

然后打开wxapkgconvertor.exe,把wx28881238baa06aeb.wxapkg拖进去



20.png

反编译成功,生成了wx28881238baa06aeb目录


21.png

vscode打开该目录,注意!由于性能问题和混淆问题,建议将目录中的app-service.js复制内容,然后找个JS格式化网站格式化一下
这里可以用Javascript格式化在线工具:https://coding.tools/cn/javascript-beautifier



格式化打开后如下:

22.png


尝试搜索关键词doGrow,现有个函数定义了doGrow

24.png

通过分析,可以发现,上面的a变量,对照了下图中的a.default.doGrow,可以发现,query对象和我们抓接口出来请求时的对象一致


25.png

猜想一下,既然可能是MD5加盐加密,很有可能方法名就叫MD5,或者尝试搜索sign看看能不能搜出结果。

下图可以发现,第一条包含有sign,还包含有hexMD5,看样子是MD5加密函数,并且下面第三条也有定义hexMD5方法


{864D6C43-19AA-4543-A5CF-F268326943A0}.png

点击第一条搜索结果,可以看到有一段
[JavaScript] 纯文本查看 复制代码
var f = "911e529a9bcf081551797284f095f061acun"

可以粗略判断它是加盐的密钥,把这部分代码贴到GPT,问问它
{441DE93B-182B-46d5-AC7B-709DA9126E96}.png
PixPin_2024-04-19_13-01-29.png

GPT已经帮我们分析好了,它说f可能是一个签名或密钥,那就先扣下这段代码,新建一个test.js文件,然后粘贴
PixPin_2024-04-19_13-02-49.png
PixPin_2024-04-19_13-04-55.png

继续分析代码

发现有段代码进行了解构,i.default.hexMD5(c + l + f)中的c和l都是通过解构了arguments获得的

var r, n, s, c, l, h, d, p, g, m = arguments;


暂时没法判断出用途,那就换个思路,直接搜hexMD5,可以发现有两个地方调用了hexMD5,第一个是咱们刚刚看过的位置。
第二个咱没看过,点进去一看,发现,诶这不是我想要的getSign吗?

{C1726DC8-511C-4454-896B-7F6066F07C8E}.png
同样的,在这里也发现了e,t,r,n解构了arguments变量

先别管他干嘛的,扣下来扣下来。这时候是没法运行的,因为会报错,hexMD5未被定义。点击搜索的第三个,把hexMD5也扣下来
PixPin_2024-04-19_13-12-26.png

咱可以发现,hexMD5调用了c,u,l这三个方法,刚好这三个方法肯定就在这附近,所以上面的代码可以判断,上面的方法就是被调用的c,u,l。

也要一并扣下来,这时候还没法运行,因为u方法会报错,会提示o未被定义
{62068629-F6AC-48c5-9096-554EEFC0E346}.png

通过hexMD5方法的上下文,可以看到有o,r,n,i,a,s方法被定义,一起扣下来
1713503942352.jpg

这是最终扣下来的代码:
微信截图_20240419131957.png


尝试运行看看,可以发现成功了,并且md5和现成的库加密出来的也是一样的:
1713504134020.jpg

回到getSign方法,将i.default.hexMD5改成hexMD5。
微信截图_20240419134329.png

尝试运行看看,你会发现加密出来的sign并不一致。

dc541dad4863fca81981d4ba10e9041f.png

关键点就在于getSIgn的arguments,当你看不懂的时候,可以问问AI,咱问问它到底是什么意思:
微信截图_20240419134609.png

这下知道getSign接受什么参数了,参数一: object, 参数二: time值,也就是20240418200528
并且通过 r = e.query || {}可以知道,e是参数1的query值,也就是我们发送请求时的object对象,这时候的query可不存在time和sign字段,可不要搞混了:
{
   "member_no" : 44246,
   "store_no" : 12,
   "type" : 12
}


所以咱可以知道,e本质上是传一个query,然后通过time值还有密钥key进行混淆,尝试一下:
1713504785426.jpg

成功!!让AI重写一下getSign方便阅读:
PixPin_2024-04-19_13-34-41.png

尝试运行一下,会发现结果一致。
1713504932369.jpg

回到apifox,尝试发送新的请求:
1713505207542.jpg

成功!逆向完成。
{8941126C-12BA-4166-8181-A50A0A86D437}.png

免费评分

参与人数 82吾爱币 +82 热心值 +76 收起 理由
jimwis + 1 + 1 用心讨论,共获提升!
shenaode + 1 谢谢@Thanks!
Conan0919 + 1 + 1 谢谢@Thanks!
Joeylin0115 + 1 我很赞同!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
adogs + 1 + 1 我很赞同!
Behind1 + 1 + 1 我很赞同!
AkaiSuisei + 1 用心讨论,共获提升!
randyho + 1 + 1 鼓励转贴优秀软件安全工具和文档!
yxlch + 1 + 1 我很赞同!
7bak + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
xcmmml + 1 我很赞同!
baicai223 + 1 + 1 我很赞同!
心比天傲 + 1 + 1 我很赞同!
redhat1019 + 1 用心讨论,共获提升!
dugu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
dvy + 1 我很赞同!
modupantu + 1 + 1 我很赞同!
ga89 + 1 + 1 用心讨论,共获提升!
dyjpxc + 1 + 1 我很赞同!
3536825424 + 1 + 1 我很赞同!
xyyc0329 + 1 我很赞同!
little0 + 1 + 1 我很赞同!
lalicorne + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zzpu213 + 1 + 1 用心讨论,共获提升!
xtfw99 + 1 + 1 我很赞同!
zhzh01 + 2 + 1 谢谢@Thanks!
guoruihotel + 1 + 1 谢谢@Thanks!
小朋友呢 + 2 + 1 热心回复!
dling89 + 1 + 1 用心讨论,共获提升!
GouKu + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Twisty11 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
TePillow + 1 + 1 谢谢@Thanks!
jsjhxyd520 + 1 谢谢@Thanks!
sy999666 + 1 + 1 热心回复!
prontosil + 1 我很赞同!
ck514234589 + 1 我希望楼主挑战一下宝宝巴士VIP中心小程序-领奖励金
Chenanin + 1 + 1 热心回复!
glau29 + 1 + 1 我很赞同!
铭焱 + 1 + 1 热心回复!
timeni + 1 + 1 用心讨论,共获提升!
Buddha_merrcy + 1 + 1 我很赞同!
wjctim + 1 + 1 我很赞同!
mhaitao + 1 + 1 我很赞同!
tocabd + 1 + 1 谢谢@Thanks!
feixiangxiang + 1 热心回复!
liuzhaocai1988 + 1 + 1 我很赞同!
xieyi2003 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
rig + 1 + 1 我很赞同!
一只迷惘的笨虎 + 1 + 1 我很赞同!
hualy + 1 + 1 我很赞同!
Yasso2 + 1 + 1 谢谢@Thanks!
iTMZhang + 1 + 1 谢谢@Thanks!
mastana + 1 + 1 用心讨论,共获提升!
guweijia + 1 + 1 用心讨论,共获提升!
felixcqb + 1 + 1 我很赞同!
xxxlsy + 1 + 1 我很赞同!
speedstar + 1 + 1 我很赞同!
hazy1k + 1 + 1 我很赞同!
moriv4 + 1 + 1 用心讨论,共获提升!
帅到没朋友~ + 1 + 1 用心讨论,共获提升!
yyxqf + 1 + 1 谢谢@Thanks!
lihuhu + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
awdlol233 + 1 + 1 我很赞同!
qq309160 + 1 + 1 我很赞同!
woofhat + 1 + 1 谢谢@Thanks!
janken + 1 + 1 热心回复!
feiyuvip + 1 + 1 我很赞同!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
唯我独宅 + 1 + 1 用心讨论,共获提升!
chhzll + 2 + 1 用心讨论,共获提升!
天才笨蜀黍 + 2 + 1 用心讨论,共获提升!
CodFrm + 1 + 1 我很赞同!
Esby + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Marken888 + 1 + 1 用心讨论,共获提升!
yikepinguo + 1 + 1 用心讨论,共获提升!
YQYuan + 1 + 1 谢谢@Thanks!
漁滒 + 2 + 1 我很赞同!
Eqwer + 2 + 1 我很赞同!
博士 + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wfghim 发表于 2024-4-19 16:52
微信PC版本:3.9.8.25
抓包程序用Proxifier转发报文给Fiddler.exe
调试程序用WeChatOpenDevTools-Python-main

直接断点调试找sign,可能更方便一些

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
cofeyu + 1 热心回复!
咋说吧 + 1 + 1 我很赞同!

查看全部评分

Hmily 发表于 2024-4-19 15:07
开始有些图盗链无法显示,一起编辑上传本地吧。
 楼主| iBaiYu 发表于 2024-4-20 14:03
Monkey0 发表于 2024-4-20 12:33
跟着操作了一下,成功获取到个人信息,签到接口也成功了,遇到个问题,请教一下,使用html引用ajax访问接口 ...

使用node.js配合axios就没这种现象了,用浏览器就会有跨域问题
 楼主| iBaiYu 发表于 2024-4-21 10:20
Glico 发表于 2024-4-21 00:43
大佬牛的 这是啥ai的

chatglm 智谱清言的
博士 发表于 2024-4-19 15:43
AI都这么强大了啊
Eqwer 发表于 2024-4-19 15:45
竟然不校对签到时间和服务器时间匹不匹配,学到了
tomjin 发表于 2024-4-19 16:17
牛批,感谢分享。再问下这是什么ai啊
zhy1992 发表于 2024-4-19 16:35
正常来说  生成签名 是不是需要 密钥呢 用户之类的内容啊?
le2yun 发表于 2024-4-19 16:38
谁懂啊!!我已经连续手动签了几个月了
zhonghuaz0464 发表于 2024-4-19 16:46
反编译小程序工具链接无效!!!
lucklys 发表于 2024-4-19 16:50
这个反编工具对现在的小程序已经无法编译了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 19:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表