menu 牢记自己是菜
XCTF-五月De1CTF------life
239 浏览 | 2020-05-19 | 阅读时间: 约 4 分钟 | 分类: XCTF比赛 | 标签:
请注意,本文编写于 282 天前,最后修改于 282 天前,其中某些信息可能已经过时。

0x1 前言

嗯,阶段性考试结束了,也该来好好学习一下了。之前把友链搭建好了,随然还没有实现自动添加,但是手动已经可以啦!欢迎各位大佬来我博客做客,交流感情。。。在这长达两周的咕咕咕中,我的数据库知识有着显著的提升(笑)。今天开始,我又回来啦,先从XCTF的题解入手,并且处理一下自己之前遗留下来的一些问题,狠狠的学习一波。这道杂项题,是我鼎师傅在实践英语课上推荐我去做做的,由于考试拖了好几周。我检讨我有罪。说回题干,这道题让我认识到了一件事,我们的沙雕网友和出题人可能是同一个人,上知天文下知地理,可怕可怕。题目的附件是谷歌上的,要有vpn才可以访问,所以我将题目文件放在附件里面了,有兴趣可以自己试试,我猜应该没人会试,毕竟出题人太变态了。game.zip


0x2 向盟约起誓

其实刚点开题目看见No Game No Life!我就猜到应该和我的入宅番《游戏人生》有关了。直到现在我还在等待这部动漫的第二季,我空白永不败北。

打开图片,游戏人生剧场版的宣传图。依稀记得高三的晚上偷偷的看,看完哭的稀里哗啦的(偷偷安利)。还是常规方法,上kali,binwalk一下发现一张图片,和一个有密码的压缩包。

抓出来,没思路。大概猜到密码应该与这个奇怪的图片有关,这就是出题人第一个变态的地方。我是在翻了题解之后,才知道这应该是对应着一个名为生命游戏的东西。
生命游戏(Game of Life),或者叫它的全称John Conway's Game of Life。是英国数学家约翰·康威在1970年代所发明的一种元胞自动机。所谓元胞自动机其实是一种离散的状态机,即无数个独立的格子,每个格子处于某种状态,然后所有格子按照预先设定好的规律进行状态演化。格子们可以是任意维度、任意形状、按任意规律排布的。而生命游戏就是最简单的元胞自动机之一——在二维平面上的方格子(细胞),每个细胞有两种状态:死或活,而下一回合的状态完全受它周围8个细胞的状态而定。按照以下三条规则进行演化:

  1. 活细胞周围的细胞数如果小于2个或多于3个则会死亡;(离群或过度竞争导致死亡)
  2. 活细胞周围如果有2或3个细胞可以继续存活;(正常生存)
  3. 死细胞(空格)周围如果恰好有3个细胞则会诞生新的活细胞。(繁殖)
    这三条规则简称B3/S23。如果调整规则对应的细胞数量,还能衍生出其他类型的自动机。

这里是大佬写的游戏。
仔细想想,这里应该是呼应了题目名称life,而且配图也很有意思--《游戏人生zero》。这个剧场版讲的就是人类为了生存不断抱团竞争的故事(安利x2)。但是有一说一要是不知道这个理论,我觉得应该是想不出来的。

要是说生命游戏想不出来不能怪出题人变态,那这里他可真的有点变态了。全网关于生命游戏的自动模拟程序我只找道了一个,而且是不支持图片导入的那种,也就是说,你要手动将这个没有网格的初始图导入。对没错,自己手动一点一点的点上去。难度系数堪比网鼎杯暴力修补汉明码。并且二维码长得也不好看,导致我第一次点击单步的时候成功的错过了它。

0x3 翻转

有一说一,我觉得这已经够恶心了,没必要在搞人了,人家就不。拿到解压密码(AJTC8ADEVRA13AR),解压文件,明显这个文件得命名是个反的并且提示单词filp。打开文件出来了一串不知道是啥得字符串。这里我又看了一下题解,base64。有一说一我不知道是巧合还是出题人故意的,这个base64末尾是没有等号的,我是一下没有反应过来。解码之后是一个反转后的hex。最终完成解码,得到flag。

这里涉及了两次翻转,大概率试的成分偏多。


0x4 总结

可能这就是国际比赛的难度,涉及的知识面广,流程也要复杂。如果是一个小比赛,我觉得这道题的步骤可以出两道misc的题目。这篇博客有水的成分,主要是再不写就要咕咕咕三周了。之后我有两个问题想研究一下,一个就是网鼎杯逆向的堆栈平衡修复的原理,还有一个就是安卓的脱壳问题,先写在这里,做个记录。最后实名diss鼎哥,我怀疑你是故意想让我手动去点生命游戏的,所以推荐给我这道题目(误)。

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!