加载中...

如何在 “咩了个咩” 的魔爪中解救女朋友


女朋友被恶魔游戏 “咩了个咩” 破防、胁持了人身自由,为了解救她,作者用魔法打败魔法,记录与恶魔游戏的对抗过程,抛砖引玉讲述了中间人攻击的实际应用 —— 网络安全任重而道远,要引以为鉴

配套视频(视频内容与下文基本一致,按需食用):

0x00 背景

最近几天突然在各处刷屏了一个 “现象级” 游戏: 一款名为 “咩了个咩” 的小游戏莫名其妙爆火了。

而原因是因为它的第二关设置的难度极高,号称通过率不足 0.1%

于是很多人都抱着不相信、挑战一下的心理打开了这款游戏,结果就陷进去了,我的女朋友就是其中之一 … …

看见她废寝忘食不断地重试(被游戏)玩第二关,精神状态接近崩溃,经过多番劝阻还是莫名地倔强,我怒了 !!!

为了能把她从游戏中解救出来,我决定亲自下场看看这款恶魔游戏到底长什么样。

0x10 解救女朋友大作战

0x11 游戏试玩

一进入游戏就是魔性的 BGM,其实就是一个三消游戏:在地图上点击相同地方块放入下方的槽位,当有三个相同的方块时会被消除。

第一关很简单,无论你怎么点都能过。

但是从第二关开始就提示难度飙升了:

第二关玩到中盘,就会发现不得不借助道具才能挽救局面,而道具一开始获得的方式也很简单,分享给朋友帮它宣传就能获得。

但是从第三遍重试开始,获得道具的方式就变成必须看 30 秒视频广告:

然而即使你用完了所有道具,第二关也无法通关。

不能通关就算了,还用 人生得意需尽欢,不过此关心不甘 等心理话术打击你,怂恿你又一次的尝试:


0x12 游戏分析

玩了 3 局我就发现问题所在了: 这游戏压根没有解

刚开始我只是怀疑,玩到终盘(已经消了 10+ 层了),把所有暗牌都清除了,然后明牌的方块数量凑不齐:

至此已经可以就确信不是因为我智商不行,而是这款游戏的开发者压根就不想让你通关。

作为一个退休程序员,就算没写过这种游戏,也知道程序在生成一局游戏之前,必须先验证这局游戏是否有解。

这款游戏之所以要堆叠、有暗牌,目的就是让人不能证明它 堆叠是否有解,你最多只能怀疑,甚至怀疑自己的智商和技术。

但当我打开所有暗牌之后,发现连 数量都是无解,我知道这个开发者充满了恶意。

我初步能够推测游戏的设计思路是:

  1. 随机在桌面上堆叠一堆牌,牌型、堆叠顺序完全随机
  2. 堆叠层数设置非常大
  3. 不做可行解校验
  4. 限制每局游戏只能用广告换取 3 个道具

为了使得玩家觉得有解,就引入了道具的玩法,但因为完全随机,所以无解的情形非常多,除非是欧皇,否则 3 个道具根本不足以解开所有死扣。

通过这种模式,利用玩家的好胜心一局局重复尝试、一局局重复看广告,而且还要利用分享诱导亲友进入这个陷阱,开发者就是无下限地骗取玩家的时间赚广告费、在薅羊毛。

一般人其实不太懂程序原理、心理上又被挑衅,如果再少些自制力,就陷进去了(例如我可怜的女朋友)。


0x13 抓包分析

我再三劝阻我的女朋友,她都出乎意料的倔强,非通关不可,我就明白解救她只有帮她通关一条路。

既然游戏被设置成无解,那就用魔法对抗魔法 !!!

首先用 Fiddler 工具对 Wechat(PC) 抓包分析,发现游戏启动、初始化时会请求两个地图包:

/sheep/v1/game/map_info_new?map_id=80001
/sheep/v1/game/map_info_new?map_id=90018

猜测 80001 是第一关的地图 ID, 90018 是第二关的地图 ID 。

后续发现,第一关的地图 ID 80001 是固定的, 第二关的地图 ID 会随着版本迭代 +1 。


0x14 验证猜想

为了验证想法,打开 Fiddler规则 -> 自定义规则 ,第一次需要在 HTTPS 的 Tab 中勾选图中 3 个选项:

并且在 工具 的 Tab 中设置 文本编辑器 和 FiddlerScript 编辑器(如 VsCode)。

然后 Fiddler 会打开自定义规则文件 CustomRules.js,在其中找到 OnBeforeRequest(oSession: Session) 方法,在方法最开始的地方添加一个条件:

if (oSession.url == "cat-match.easygame2021.com/sheep/v1/game/map_info_new?map_id=90018") {
    oSession.url = "cat-match.easygame2021.com/sheep/v1/game/map_info_new?map_id=80001";
}

即拦截请求后,若发现匹配条件的会话,则把 ID 为 90018 的请求参数篡改为 80001,即把第二关的地图篡改为第一关的地图

重新打开游戏,可以发现这次两个地图请求都变成 80001 了:

正常通过第一关后,发现第二关的地图变成第一关了:

毫无悬念地第二关也通关了:

emmm,就这 … -_- ??? …

这游戏不仅仅在侮辱玩家,还在侮辱程序 … …


0x15 演示视频


0x16 行动结果

因为第二关挑战成功之后游戏会强制锁定一天,她就没法玩啦~ 解救女朋友行动大作战成功 !!!

现实情况是都快打起来了 T^T … 我又要去买个键盘了 …

0x20 对抗反思

其实这次对抗只用到了 Fiddler 进行中间人攻击,可能因为是小作坊游戏、安全性不高,所以一下子就破了。

该游戏的 BUG 层出不穷,例如无需分享获得道具、地区错误、个人名片 ID 异常等,但毕竟是临时招人开发团队、诸多问题也就不奇怪了

但也足以引起我们反思: 企业应用应该如何防止中间人攻击?

首先 CodeReview 要落地,可以预防业务逻辑漏洞、安全漏洞被带到生产环境。

其次平时我们觉得似乎是安全的 HTTPS 协议,似乎也在某些场景下也会变得不安全了,这里推荐两篇文章:

Wechat 最新版使用了 HTTPS 双向认证,客户端内置证书,使得 Fiddler 之类的工具无法解包,所以前面是通过降版并清除小程序缓存后再抓包的

0x30 写在最后

之所以公开处刑这款恶魔游戏,是不得已而为之,实在不想看到亲友一步步陷下去,浪费时间还要承受精神污染,严重影响家庭和睦。

希望平台和相关部门可以重视这类问题,做好监管职责,我已经举报了这个游戏,但能激起多少浪花就不得而知了。

呼吁大家莫要上当、不要再为这种游戏宣传造势(即使是负面的也会有人跃跃欲试)。

适度游戏,健康生活。


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
  目录