吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6216|回复: 8
收起左侧

[Android CTF] 0ctf 2016 boomshakalaka writeup

[复制链接]
GG0 发表于 2016-11-15 00:35

boomshakalaka

首先点我下载APK,安装运行APK后,发现是一个类似之前微信上的打飞机游戏。

直接用jeb反编译APK,没有任何保护处理,反编译代码如下图:



可以看到APK初始化时,新建了两个xml文件,分别为flag.xml和CocosdxPrefsfile.xml,并且分别写入了一些字符串,其中flag文件中的YmF6aW5nYWFhYQ== 明显为base64编码,随便找了个在线base64解码,解码后为bazingaaaa ,再凑上Flag的标志,组合为 0ctf{bazingaaaa} ,提交后提示错误。

运行游戏,没有得分,直接暂停。CocosdxPrefsfile.xml的内容为:

MGN0ZntDMGNvUzJkX0FuRHJv

经过多次测试,每次游戏完成初始化后,CocosdxPrefsfile.xml的内容均为上诉字符串。同样是base64编码,解码后为 0ctf{C0coS2d_AnDro ,很明显地方找对了,但是Flag不全。

接着继续游戏,随便得了几分,然后撞死。CocosdxPrefsfile.xml的内容为:

MGN0ZntDMGNvUzJkX0FuRHJv...dz99

发现除了开始初始化的固定字符串意外,结尾也同样是固定的 dz99 ,猜测是游戏结束时写入的固定串。

根据得到最高分的提示,开始找关于得分的函数。Java层没几个类,因此重心转到so,把libcocos2dcpp.so拖到IDA里,通过score关键字找到关键函数ControlLayer::updateScore(int) ,直接F5后,发现逻辑就是根据每次击中飞机得到的分数,向CocosdxPrefsfile.xml写入对应的字符串,如图:

值得注意的是,其中最大分数被设置为1000000000分,其对应的字符串为 4w ,因此结合前面分析,字符串为:

MGN0ZntDMGNvUzJkX0FuRHJv4wdz99

解码后为 0ctf{C0coS2d_AnDro? ,出现了乱码,明显还是不对。

分析到这里,这道题几乎已经是完成了。剩下的就是开始拼凑Flag了。通过多次尝试,最后我们按照 ControlLayer::updateScore(int) 中所有分数的从小到大的顺序,将其对应的字符串组合到一起为:

MWRfRzBtRV9Zb1VfS24w

再将头部和尾部组合到一起:

MGN0ZntDMGNvUzJkX0FuRHJvMWRfRzBtRV9Zb1VfS24wdz99

解码后为 0ctf{C0coS2d_AnDro1d_G0mE_YoU_Kn0w?} ,搞定。

总结
  • flag.xml的内容是为了提示我们CocosdxPrefsfile.xml的内容也是base64编码。
  • 千万不要真的手动打最高分,毫无意义。

最后吐槽一下,这道题毫无技术含量,逻辑也有很大问题。从技术来看,只要具备基本的Android逆向技能,就能定位到 ControlLayer::updateScore(int) ,事实上,我用了5分钟就找到了这个函数,但是到最后找到Flag用了几个小时。按照题目得到最高分的提示,我直接在上层函数修改了分数为1000000000分,得到字符串为MGN0ZntDMGNvUzJkX0FuRHJv4wdz99 。我继续尝试修改分数为2147483647(32位有符号整数的最大值),得到字符串为 MGN0ZntDMGNvUzJkX0FuRHJvdz99 。然后又设想了整数溢出之类的问题。最后的答案竟然是把所有分数的字符串全部拼在一起,我不知道这样拼凑和 play the game, get the highest score 有什么联系,并且正确的Flag几乎不可能出现在CocosdxPrefsfile.xml中。

讲道理而论,这道题真的浪费了我几个小时的青春。too young too simple,sometimes naive

感谢作者。。新手发帖。。



免费评分

参与人数 1热心值 +1 收起 理由
1595901624 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2016-11-15 00:36
图片有问题,不要直接粘贴,先上传再贴到帖子中。
MaxYang69 发表于 2016-11-15 00:48
前排肛H大,有人一起吗

免费评分

参与人数 2热心值 +2 收起 理由
擒勒个兽 + 1 加我一个
Godfather.Cr + 1 为你的勇气点赞!同肛!

查看全部评分

ppszxc 发表于 2016-11-15 01:04
qtfreet00 发表于 2016-11-15 09:07
我记得当时做的时候最后必须死才会出现最后一段base64,
enimey 发表于 2016-11-15 16:28
吓我一跳,竟然转我的。但是这题确实逻辑硬伤。
 楼主| GG0 发表于 2016-11-16 00:08
哇,,立马被发现了。。
iioe 发表于 2016-11-18 16:00
看的吃力。。
红色乌鸦 发表于 2016-11-26 15:26
小样,露馅了吧!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-1 09:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表