这两天逛 v 站出现了一众微信跳一跳 'AI',已经被刷屏了……
大致思路都是通过计算两点距离,模拟点击起跳来方式来实现的,
可是作为不越狱的苹果党,手里又没安卓机,看着被刷屏刷榜,非常不爽啊
想着抓个包看看能不能模拟下网络请求刷分,结果 ……
发现可以直接伪造 POST 请求刷分
https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417
更正写错的地方
game.js 文件可以用 chrome 调整后再看,逻辑其实蛮清晰的
https://gist.github.com/feix/6dd1f62a54c5efa10f1e1c24f8efc417#file-wx_t1t_hack-js
大家悠着点玩 😜
鉴于留言区有贴 session_id 求组的,增加一个附言: session_id 为 base64 字符串, 示例如下
zmprIsSEt/dxWNTH4iyU4V2uM7p8DTQWg1Op+dR0hwbvBW2bl00IHXuIGssPGoMeydL0thdRoxXa9MWqX1xEbDvk+o+1rLiihz0VDhUgbprjLVC4qBqiUQF54c061IhJ1JjBy79dI2xWYs0G9oyI9A==
虽然 CDN 方式下载失效了, 原链还是可以下载的,各位 ……
https://servicewechat.com/weapp/release/${appid}/${version_num}.wxapkg
102
bravecoder OP @wzw appid 是公开的,格式类似 wx7c8d593b2c3a7703 ;访问小程序时,http 请求 referer 里会包含。
version_num 类似,就是数字 1,2,3 …… 可以遍历 |
103
wzw 2018-01-01 15:48:47 +08:00
@bravecoder 可惜有些小程序用这个链接下载是 404 Not Found
http://123.125.9.32/resstatic.servicewechat.com/weapp/release/***/*.wxapkg 是不是有些 IP 要改变? 不是一个地方存储 |
104
mysteri0uss 2018-01-01 15:55:41 +08:00
https://gist.github.com/mysteriouss/01d7f18cdef47acc0781e8f484f2d2d0
根据楼主提供的代码修改的油猴脚本,在 tampermonkey 下运行正常 目前没有对 Referer 的验证 |
105
mason961125 2018-01-01 15:59:30 +08:00
所以现在还没修复?微信团队没人上 v2ex?
|
106
Telegram 2018-01-01 16:04:33 +08:00 via iPhone
本来只想改个 400 左右,弄个第一差不多了,结果改来改去,排行榜没变化。以为编码什么的问题,又从 github 复制一份测试,也没改分数直接运行,然后突然想到是不是刷新问题?
其他手机一看,哈哈哈哈,2018,尴尬了。。。 |
107
289450031 2018-01-01 16:06:17 +08:00
@mysteri0uss 具体怎么使用呢?
|
108
esonchen 2018-01-01 16:08:43 +08:00
大佬放的 github 连接点不开耶...
|
109
mysteri0uss 2018-01-01 16:10:13 +08:00 1
@289450031 #107 安装好以后,访问 https://mp.weixin.qq.com 即可
|
110
slwl 2018-01-01 16:29:56 +08:00
如何抓包 拿到 session_id
下载最新 charlesproxy 启动 charlesproxy 配置代理: 设置 > 无线局域网 > 配置代理 > 手动 > IP:电脑 ip,端口:8888 导入 https 证书: 浏览器访问 http://chls.pro/ssl 下载安装证书 启动跳一跳小程序 去 charlesproxy 里查看抓到的请求, https://mp.weixin.qq.com/wxagame/wxagame_init 路径的请求,请求体里就包含 session_id 汗颜,启动跳一跳,没抓到 https://mp.weixin.qq.com/wxagame/wxagame_init 这个路径的数据哈。只有 https://mp.weixin.qq.com/ |
111
caijunyi 2018-01-01 16:32:34 +08:00
都被你们玩坏了
|
112
Luzifer 2018-01-01 16:33:33 +08:00
C:\Users\Dell\Desktop>node wx_t1t_hack.js
2018! Happy new year! 之后分数为什么没变呢? 应该是 2018 啊 |
113
289450031 2018-01-01 16:37:32 +08:00
@mysteri0uss 方便留个联系方式交流一下吗
|
114
dd0754 2018-01-01 16:41:09 +08:00
老哥们,你们之前抓包的时候有没有这个 bottlereport,这个是之前就有还是现在才有的?如果是现在才有的那要小心了...
|
117
Deeer 2018-01-01 17:12:13 +08:00
没有 app.json 怎么运行啊,求告知
|
118
artandlol 2018-01-01 17:23:28 +08:00 1
@mysteri0uss 安卓安装 packet capture 免 root 抓包 再配合你的脚本 成功了
|
119
x18960 2018-01-01 17:25:23 +08:00
收藏了 大佬 ! 这不是徒手扒小程序吗
|
120
kiistar 2018-01-01 17:55:17 +08:00
好像被封了 所有的下载 都是 404 Not Found
|
121
kiistar 2018-01-01 18:13:47 +08:00
或者是不是各种类型的小程序 是分服务器放 前面的 http://123.125.9.32/ 这台服务器没有其他类型的小程序
|
123
lerp 2018-01-01 18:28:17 +08:00 via Android
18:28 成功
|
124
touzi 2018-01-01 18:28:57 +08:00
mysteri0uss 不行, Chrome 下工作台没有输出任何内容
|
125
touzi 2018-01-01 18:31:33 +08:00
@mysteri0uss 不行
|
126
kiistar 2018-01-01 18:32:05 +08:00
@bravecoder 想问下楼主 123.125.9.32 是如何获得的
|
128
scusjs 2018-01-01 18:34:55 +08:00
然后去钥匙串中设置信任 |
129
bravecoder OP @mysteri0uss 没太明白用油猴的好处,是不用装 node 吗?😅
|
130
bravecoder OP @kiistar 前面有人提到了,应该是 cdn
|
131
bravecoder OP @mason961125 哈哈哈,话说昨晚他们还升级了两个版本呢,今天一点动静都没有……
|
132
Wysten 2018-01-01 18:44:53 +08:00
此贴火了,头条,公众号都看到有人报道这贴子了。。
|
133
4ever911 2018-01-01 18:58:52 +08:00
6666, 我修改成 666 了。。。
|
134
fe619742721 2018-01-01 19:03:00 +08:00 via iPhone
好欢乐,那么问题来了,如果你是腾讯跳一跳的开发者,你能用什么办法避免这种直接通过接口刷分的情况呢
|
135
qiayue 2018-01-01 19:05:17 +08:00
@fe619742721 前端记录用户操作 log,一起提交到后端去验证计算分数
|
136
Telegram 2018-01-01 19:09:14 +08:00 via iPhone
|
137
kiistar 2018-01-01 19:09:50 +08:00
@bravecoder 您是如何获取到这个 cdn 的 ip 呢 通过 charles 没有找到能用的其他 ip 呢
|
138
fe619742721 2018-01-01 19:09:56 +08:00 via iPhone
@qiayue 但是这种 log 也是能够被分析出规律从而伪造的吧,而且每一个做实时验证,服务端压力会不会不小?
额,我只是好奇,纯粹技术讨论哈。。感觉挺好玩的 |
139
qiayue 2018-01-01 19:12:56 +08:00
@fe619742721 没有完美的办法,只能尽可能的提高伪造数据的难度
|
140
yagnqionggo 2018-01-01 19:14:33 +08:00
有个地方不明白,安装包的下载路径是怎么发现的,之前就有这个问题嘛,还是这次发现的
http://123.125.9.32/resstatic.servicewechat.com/weapp/release/wx7c8d593b2c3a7703/4.wxapkg |
141
slwl 2018-01-01 19:27:14 +08:00
@mysteri0uss 同样搞了半天没搞好 node 环境,request-promise 一直没搞好。
|
142
bravecoder OP @fe619742721 看防御成本,在成本允许的范围的,前端尽可能做混淆提高复杂度。没有其他好的办法,毕竟前端是代码和数据都在攻击方手里。
|
143
yagnqionggo 2018-01-01 19:45:53 +08:00
@bravecoder
http://123.125.9.32/resstatic.servicewechat.com/weapp/release/{appid}/{version_num}.wxapkg 发现关键的第一步抓包找不到,请问下这个下载地址是怎么发现的? |
144
yagnqionggo 2018-01-01 19:48:46 +08:00
@yagnqionggo 如果没有这个下载地址,后面就没法解密 wxapkg,也没法分析代码知道加密方式
|
145
bravecoder OP @yagnqionggo 非常有意思的点。我把原始请求头发上来你就应该明白啦,注意看 UA
-H 'Accept: */*' -H 'Accept-Encoding: gzip' -H 'Cache-Control: no-cache' -H 'Connection: Keep-Alive' -H 'Content-Type: application/octet-stream' -H 'Host: 123.125.9.32' -H 'User-Agent: MicroMessenger Client' |
146
lrdcq 2018-01-01 20:16:52 +08:00
@yagnqionggo 抓包应该能抓到的。另外微信也会在手机本地 /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg 下储存 wxapkg 包。至于解密,拿到 wxapkg 随便看一下就会写了,根本没加密的成分在里面
|
147
sologgfun 2018-01-01 20:22:00 +08:00
我手机上设置了 http 代理,也安装了证书,但是抓包的 mp.weixin.qq.com 下面全是 unknown 无法访问。请问是怎么回事呀?
|
149
bravecoder OP @lrdcq 其实就是解压缩,这个早就有人研究过 https://share.whuboy.com/weapp.html
|
150
h4rdy 2018-01-01 20:24:45 +08:00
同问怎么找到这个地址的
http://123.125.9.32/resstatic.servicewechat.com |
151
lrdcq 2018-01-01 20:29:43 +08:00
@bravecoder 是啊,就是解压。我能说 lz 提到的 python 的解压脚本就是我去年初写的嘛( http://lrdcq.com/me/read.php/66.htm ),还把我署名去掉了(尴尬)
|
154
bravecoder OP @lrdcq 非常尴尬了,看来我 gist 里原始代码的链接需要纠正下了,原谅我没有去考据一下。既然贴了博客,我就去看看🤓
|
155
voocel 2018-01-01 20:52:47 +08:00
火钳刘明
|
156
lrdcq 2018-01-01 20:56:29 +08:00
@bravecoder 倒是无所谓吐槽一下,应该是从 https://share.whuboy.com/weapp.html 中的代码 fork 出来的吧,他好歹做了一下改进,另外他这网站首页下面那个啥“从微信小程序看前端代码安全”也有我博客的内容。看起来他对看到的东西进行了重新整理和归纳的,我个人写博客和脚本比较随性,并不友好🤓
|
157
kalagxw 2018-01-01 21:02:53 +08:00
经过测试 2018 分只能自己排行榜看到,好友排行榜已经没你这个人了。
|
158
twm 2018-01-01 21:02:59 +08:00 via iPhone
|
159
IllBeBack 2018-01-01 21:24:33 +08:00
|
160
Telegram 2018-01-01 21:25:49 +08:00
|
161
Telegram 2018-01-01 21:26:46 +08:00
|
164
ThemisMin 2018-01-01 21:54:32 +08:00
@bravecoder 请问你贴出来的原始请求头是怎么抓到的?
|
165
Deeer 2018-01-01 21:57:22 +08:00 via iPhone
那么问题来了,如何修改游戏排名中的昵称呢
|
166
233 2018-01-01 22:02:07 +08:00
你们现在还有人下载 wxapkg 成功吗
|
168
zz233333zz 2018-01-01 22:22:04 +08:00
@ZE3kr 为啥我用 surge 抓不到这个包呀,连一个 https 的包都没有呢
|
169
ob 2018-01-01 22:30:18 +08:00 via Android
默默的收藏
|
170
cigarzh 2018-01-01 22:43:44 +08:00
改个小游戏分数不是个严重问题,拿到源码这件事就严重得多了
|
171
kiistar 2018-01-01 23:04:29 +08:00
解析出来的包文件都是 html 的 感觉内容无法正常使用
|
174
Liyuu 2018-01-02 03:05:16 +08:00
感谢这么详细的教程,新年快乐!
|
175
billytom 2018-01-02 05:12:46 +08:00
有小伙伴知道 surge 怎么抓包看小程序的 appid 和 version 吗?我怎么找来找去看不到?反而是跳一跳的很快就看到在哪里了
|
176
aino 2018-01-02 08:49:10 +08:00
如何提交修改好的 JS 文件啊?
|
177
er567 2018-01-02 09:05:03 +08:00
|
178
er567 2018-01-02 09:09:42 +08:00
#177 好吧 fq 就可以了
|
179
KgM4gLtF0shViDH3 2018-01-02 09:15:36 +08:00
@fe619742721 #134 只要是能够暴露前端源码的都不能避免,就像现在的新浪腾讯网易都可以被模拟登录。
|
180
Bantes 2018-01-02 09:18:24 +08:00
来玩的求几个 wxapkg 学习下
|
181
artandlol 2018-01-02 09:25:06 +08:00
再来个 iphone 方案
安装 红手指云手机 + 微信 + 黑松鼠(安卓虚拟机的 apk) |
183
Olajuwon 2018-01-02 09:34:49 +08:00
09:34 已成功
|
184
cxl008 2018-01-02 09:48:22 +08:00
已经玩坏了
|
185
qq2511296 2018-01-02 09:57:02 +08:00
楼主是怎么抓包到 wxapkg 的下载地址的?
|
186
KgM4gLtF0shViDH3 2018-01-02 10:05:21 +08:00
@mysteri0uss #104 登录微信公众平台自动执行?
|
187
raofeng 2018-01-02 10:16:15 +08:00
整了个 9527,自己看是 0,别人能看到。
哎呀,玩坏了玩坏了,估计腾讯要开始加密了。 |
188
skadi 2018-01-02 10:20:35 +08:00
我为 webGL 加热度. ( 微笑
|
189
goodluck 2018-01-02 10:22:13 +08:00
老铁,你破坏游戏规则了
|
190
zz233333zz 2018-01-02 10:31:56 +08:00
10.25 提交成功
|
191
a441023263 2018-01-02 10:33:18 +08:00
thor 直接抓
|
192
SkyKoo 2018-01-02 10:43:23 +08:00
已提交成功^^
|
193
kamal 2018-01-02 10:57:08 +08:00
@bravecoder @yagnqionggo 非常有意思的点。我把原始请求头发上来你就应该明白啦,注意看 UA
-H 'Accept: */*' -H 'Accept-Encoding: gzip' -H 'Cache-Control: no-cache' -H 'Connection: Keep-Alive' -H 'Content-Type: application/octet-stream' -H 'Host: 123.125.9.32' -H 'User-Agent: MicroMessenger Client' 请问楼主这个请求是什么时候发起的呢,抓包没看到这个请求。 |
194
TanninS 2018-01-02 11:14:40 +08:00
老司机们,我已经安装好这两个包了
+ [email protected] + [email protected] 但是我在 macOS 终端输入 node wx_t1t_hack.js 以后出现这种情况是怎么回事呢 ### ### The "request" library is not installed automatically anymore. ### But required by "request-promise". ### ### npm install request --save ### /Users/tannins/node_modules/request-promise/lib/rp.js:23 throw err; ^ |
195
krfalcon 2018-01-02 11:15:09 +08:00
@zz233333zz surge 如何抓包 https
|
197
finab 2018-01-02 11:19:19 +08:00
something crash 了呀
调试后发现是这个没有 var times = response.my_user_info.times + 1 谁知道咋回事么? |
198
ycmchong 2018-01-02 11:22:04 +08:00
github 地址打不开了,删了?
|
200
satanandroid 2018-01-02 11:28:09 +08:00
2018 分。提交成功. 2018 年 1 月 2 日 11:28:01
|