CTF

0ctf 2016 boomshakalaka writeup

Posted by Jieming Gu on 2016-12-02

本文为2016年0ctf中boomshakalaka的writeup。

0

boomshakalaka writeup

首先点我下载题目。直接用jeb反编译,反编译代码如下:

1

APK初始化时,新建了两个xml文件,分别为flag.xml和CocosdxPrefsfile.xml,并且分别写入字符串,其中flag文件中的YmF6aW5nYWFhYQ==为base64编码。多玩几把游戏,游戏结束后的暂停期间导出文件,在Cocos2dxPrefsFile.xml中发现分数不同,字符串不同。

3

4

9

Java层没有修改文件内容,说明在so层修改。打开so,代码没混淆,函数命名应该是规范的,搜索关键词score,发现有两个函数相关。

5

updateScore函数中,当游戏分数达到一定的分数段,就会输出一部分base64编码后的字符串。

6

按分数的高低顺序将base64字符串拼起来就是flag。分数为0得到的字符串是0ctf{C0coS2d_AnDro1;在updateScore函数中得到的base64字符串是MWRfRzBtRV9Zb1VfS24w,解码后是1d_G0mE_YoU_Kn0。flag并不完整,重新看不同分数对应的字符串,发现都是以dz99结尾,拼接后解码得到flag。

吐槽一下,这道题逻辑有很大问题,答案是把所有分数的字符串全部拼在一起,但是题目要求并不是这样。