《羊了个羊》微信小游戏逻辑漏洞

本篇文章参考微信公众号Hack学习呀的文章:https://mp.weixin.qq.com/s/ziMH4EAd4Wk7tbZTrL7Zbg

0x00 起因

《羊了个羊》本质上是一款闯关消除小游戏,通关率不到 0.01%,号称史上最难玩的游戏。它的规则很简单。页面上方是重叠的各类方块,下方是 7 个空栏,玩家需要在上方的重叠方块中完成消除( 3 个同类消除),拿完所有方块即胜利,而7个空位被填满则失败。

最近被女朋友(现在变前女友了)安利着玩了这个《千层饼消除》、《高血压模拟器》、《看广告模拟器》,玩了n多遍发现根本打不过第二关,网上看了看发现似乎是游戏底层逻辑有问题,采用了真随机,也就是说每次牌组并不一定是能解出来的。菜鸡看了很生气,于是不服输的我带着某师傅的文章打开了抓包软件... ...

0x01 工具准备

需要用到的工具有

Charles
Proxifier
Burpsuite
电脑端微信客户端

下载地址:链接:https://pan.baidu.com/s/1mXGe9PzoBGzHgLrOM5HFJg提取码:z8al

配置代理

第一步 设置Charles监听环境

Help -> SSL Proxying -> 第二个

安装证书到本机





到这里就完成了Charles的SSL证书导入,下面设置SSL和开启SSL

proxy -> SSL Proxying Settings -> add



设置Proxy Setting

设置监听端口

保存完就设置好了,可以重启下电脑

第二步 设置Burpsuite

打开burp,注意监听端口不要和其他软件以及Charles端口冲突

https://burp/

浏览器访问下载证书

Chrome设置搜索证书重复上述步骤安装证书

设置完后burp配置完成。

第三步 设置proxifier

点击配置文件 -> 代理服务器

添加Charles和burp的监听地址和端口

再点击配置文件 -> 代理规则,配置为如下,首先设置微信小程序走Charles代理,然后设置Charles走Burp的代理

WeChatAppEx.exe是电脑端小程序的进程名,通过任务管理器找到羊了个羊,然后右键查看详细信息可以看到

到这里就设置完成了,如果还抓不到包就重启电脑

代理链

实际上就是走了一个电脑端微信小程序进程-->Proxifier-->Charles-->Proxifier-->Burpsuite的代理链,流量会从小程序会通过Proxifier走到Charles工具,然后Charles走代理到Burpsuite,最后使用Burpsuite来进行修改和重放

0x02 开搞

微信电脑端搜索羊了个羊,打开

如果代理设置没问题的话,打开游戏之后proxifier会显示这样

burp显示

charles

然后在burp里一个一个的放包,不然会抓不到修改关卡的包

这个sheep就是羊了个羊的,找map_id=80001参数,这个就是地图参数

后面一个包就是第二关的,把map_id改为80001即可实现第二关也是第一关的简单难度地图,即可轻松通关。

通关之前再次抓包,抓通关的那个包

然后即可扔到Intruder模块里做重放攻击,刷取通关次数

0x03 修复方案

前面第二关修改为第一关的问题,可以增加关卡前后的逻辑校验,也可以在第二关之前获取第一关通关时返回的唯一值。

关于重放攻击,修复方案如下

1. 在每个数据请求中加入时间戳,在服务端进行验证。
2. 加入随机生成的 token,在服务端进行有限性验证。
3. 应采用校验技术或密码技术保证重要数据在传输过程中不存在篡改或重放攻击,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。
posted @ 2023-10-13 12:33  M0urn  阅读(81)  评论(0编辑  收藏  举报