作为一个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的更多相关文章

  1. BugkuCTF~Mobile~WriteUp

    最近,开始记录一篇关于 Android 逆向分析的 WriteUp 方便有需要的人学习,也欢迎大家相互交流, 发现不 一样的世界. 一. signin 考点:反编译.静态分析 Topic Link:h ...

  2. ISCC2016 WriteUp

    日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...

  3. ISCC 2018 Writeup

    题解部分:Misc(除misc500).Web(除Only Admin.Only admin can see flag.有种你来绕.试试看).Reverse.Pwn.Mobile Misc( Auth ...

  4. 0CTF 2017 部分Web的某些不一样的思路

    洒家参加了0CTF 2017,做了一些题目.赛后过了好几天,看网上已经有了一些写得不错的Writeup,这里就写一写洒家的一些不一样的思路. 一些不错的Writeup https://ctftime. ...

  5. UWP开发之Mvvmlight实践七:如何查找设备(Mobile模拟器、实体手机、PC)中应用的Log等文件

    在开发中或者后期测试乃至最后交付使用的时候,如果应用出问题了我们一般的做法就是查看Log文件.上章也提到了查看Log文件,这章重点讲解下如何查看Log文件?如何找到我们需要的Packages安装包目录 ...

  6. ipad&mobile通用webapp框架前哨战

    响应式设计的意义 随着移动设备的发展,移动设备以迅猛的势头分刮着PC的占有率,ipad或者android pad的市场占有率稳步提升,所以我们的程序需要在ipad上很好的运行,对于公司来说有以下负担: ...

  7. jQuery Mobile入门

    转:http://www.cnblogs.com/linjiqin/archive/2011/07/17/2108896.html 简介:jQuery Mobile框架可以轻松的帮助我们实现非常好看的 ...

  8. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  9. 解决Jquery mobile点击较长文本body的时候Header和footer会渐入渐出的问题

         在做一个Phonegap+Jqm工程的时候,出现了如题的问题,相信很多人都遇到过Jquerymobile点击body时候header和footer会闪烁的显示和隐藏问题,fixed却并不能真 ...

随机推荐

  1. textarea去掉右侧滚动条,去掉右下角拖拽

    代码: <TEXTAREA style= "overflow:hidden; resize:none; "> </TEXTAREA> 当使用背景图片的时候, ...

  2. 学习web前端学习路程

    学习路程: 1.HTML和CSS基础 2.JavaScript语言 3.jQuery 4.综合网站实践 5.优化及调试

  3. [Django 1]安装Django并创建虚拟虚拟环境项目

    1)安装Django 使用pip来安装,命令如下: pip3 install Djangopip install Django(安装到python2)python3 -m pip install Dj ...

  4. Jquery揭秘系列:谈谈bind,one,live,delegate事件及实现

    在Jquery里面,我们用的最多的就是事件绑定了,事件绑定有多个函数.例如:bind,one,live,delegate等等. 我们先看看他们的定义,直接进入主题: bind( )方法用于将一个处理程 ...

  5. SpringBoot应用部署[转]

    在开发spring Boot应用的过程中,Spring Boot直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jett ...

  6. requests 模块

    发送请求 使用Requests发送网络请求非常简单. 一开始要导入Requests模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取Gith ...

  7. [React] 多组件生命周期转换关系

    前段时间一直在基于React做开发,最近得空做一些总结,防止以后踩坑. 言归正传,React生命周期是React组件运行的基础,本文主要是归纳多组件平行.嵌套时,生命周期转换关系. 生命周期 Reac ...

  8. less简介

    Less是一种动态的样式语言.Less扩展了CSS的动态行为,比如说,设置变量(Variables).混合书写模式(mixins).操作(operations)和功能(functions)等等,最棒的 ...

  9. bzoj3527: [Zjoi2014]力

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  10. TypeScript Function(函数)

    在JavaScript中,函数是构成任何应用程序的基础块.通过函数,你得以实现建立抽象层.模仿类.信息隐藏和模块化.在TypeScript中,虽然已经存在类和模块化,但是函数依旧在如何去"处 ...