0ctf – mobile – boomshakalaka writeup
作为一个web狗,一道web都没做出来Orz。。。做出来一道apk,纪念一下在ctf中做出的第一道apk。。。
首先在模拟器或者真机中安装一下apk看到是一个cocos2dx的打飞机游戏
根据题目提示,要打游戏打到最高分就会得到flag,首先拉到Jeb中反编译一下,在manifest文件中看到入口类为FirstTest类
FirstTest类的onCreate方法调用了a类对flag和Cocos2dxPrefsFile字符串做了某些操作。
下面看一下a类的实现
a中使用了SharePreferences并向其中写入一些数据,sharePreferences是android的一种数据存储机制,它会在/data/data/com.example.plane/下生成一个xml文件,并将数据存储在其中。
随便玩一下游戏之后,查看/data/data/com.example.plane/Cocos2dxPrefsFile.xml的内容:
里面有一段base64的字符串,解码之后看到了0ctf{xxx的字符串,但是字符串并不完整,猜测flag是动态生成的,多次运行游戏并且获取不同分数后发现该文件中的base64长度随分数高低有所变化,所以flag和游戏分数高低有关
在java层的代码中仅发现FirstTest类中有对SharePreferences的操作。
所以主要操作应该在so中,使用IDA对so进行反编译,发现so中两个与分数有关的函数
看了一下updateScore的代码,感觉已经很接近结果了,(可以动态调试一下以确定分数改变时会调用这个函数),这个程序生成flag的大概流程是,当游戏分数达到一定的分数段,就会输出一部分base64编码后的字符串。
所以我们只需要按分数的高低顺序将这些base64的字符串拼起来就是flag
之前我们在xml文件中的到的字符串是
0ctf{C0coS2d_AnDro1
在updateScore中得到的base64字符串为:MWRfRzBtRV9Zb1VfS24w
解码后: 1d_G0mE_YoU_Kn0
卧槽。。。flag不是完整的怎么办!!!
肯定还有其他调用SharePreferences的地方!写文件的API是一样的,使用IDA的交叉引用找到其他调用API的地方,然后得到完整的flag
0ctf{C0coS2d_AnDro1d_G0mE_YoU_Kn0w?}
0ctf – mobile – boomshakalaka writeup的更多相关文章
- BugkuCTF~Mobile~WriteUp
最近,开始记录一篇关于 Android 逆向分析的 WriteUp 方便有需要的人学习,也欢迎大家相互交流, 发现不 一样的世界. 一. signin 考点:反编译.静态分析 Topic Link:h ...
- ISCC2016 WriteUp
日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...
- ISCC 2018 Writeup
题解部分:Misc(除misc500).Web(除Only Admin.Only admin can see flag.有种你来绕.试试看).Reverse.Pwn.Mobile Misc( Auth ...
- 0CTF 2017 部分Web的某些不一样的思路
洒家参加了0CTF 2017,做了一些题目.赛后过了好几天,看网上已经有了一些写得不错的Writeup,这里就写一写洒家的一些不一样的思路. 一些不错的Writeup https://ctftime. ...
- UWP开发之Mvvmlight实践七:如何查找设备(Mobile模拟器、实体手机、PC)中应用的Log等文件
在开发中或者后期测试乃至最后交付使用的时候,如果应用出问题了我们一般的做法就是查看Log文件.上章也提到了查看Log文件,这章重点讲解下如何查看Log文件?如何找到我们需要的Packages安装包目录 ...
- ipad&mobile通用webapp框架前哨战
响应式设计的意义 随着移动设备的发展,移动设备以迅猛的势头分刮着PC的占有率,ipad或者android pad的市场占有率稳步提升,所以我们的程序需要在ipad上很好的运行,对于公司来说有以下负担: ...
- jQuery Mobile入门
转:http://www.cnblogs.com/linjiqin/archive/2011/07/17/2108896.html 简介:jQuery Mobile框架可以轻松的帮助我们实现非常好看的 ...
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- 解决Jquery mobile点击较长文本body的时候Header和footer会渐入渐出的问题
在做一个Phonegap+Jqm工程的时候,出现了如题的问题,相信很多人都遇到过Jquerymobile点击body时候header和footer会闪烁的显示和隐藏问题,fixed却并不能真 ...
随机推荐
- JS禁止选中文本方法
if (typeof(element.onselectstart) != "undefined") { // IE下禁止元素被选取 element.onselectstart = ...
- VS 报cmath(19): error C2061: 语法错误: 标识符“acosf” 错误
这是因为我在.c文件中用了 #include <iostream> using namespace std; 这样编译的时候就报: 出现错误类型如下:1>c:\program fil ...
- 申请邓白氏编码的时候总是提示 Enter a valid Street Address 怎么办?
今天要申请一个苹果开发者公司(Company)账号,然后需要邓白氏编码,然后填写企业的基本信息.其中对于Street Address认真的对照着中文翻译为如下格式: Kang Hesheng buil ...
- LeetCode:Max Points on a Line
题目链接 Given n points on a 2D plane, find the maximum number of points that lie on the same straight l ...
- ionic路由传值
ionic路由传值 app.js ===================================== //新建工作任务.state(‘app.newTask’, angularAMD.rout ...
- hibernate的三表查询
表的关系: Cardgraderule 1:n Cardgrade Cardgrade 1:n Acardtype 实体类: public class C ...
- cosbench read异常解决办法。 Unable to verify integrity of data download. Client calculated content hash didn't match hash calculated by Amazon S3. The data may be corrupt.
问题:cosbench read测试failed 报错如下 Cosbench v0.4.2.c4 against Ceph (Hammer) / radosgw / HAproxy's HTTP en ...
- django model Meta选项
可用的 Meta 选项 abstract Options.abstract 如果 abstract = True ,这个 model 就是一个 抽象基类 . app_label Options.app ...
- sendEmail
原文:http://blog.chinaunix.net/uid-16844903-id-308853.html 功能: 发邮件的客户端 官网地址: http://caspian.dotconf.ne ...
- Python基本数据类型之整型和布尔型
整型和布尔型 获取对象的数据类型 1.type() 2.dir() 3.help() 4.在pycharm里面的操作 数字类型 int 创建: int() 接收数字字符串 .bit_lenght() ...