| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> XCTF_MOBILE13_基础android -> 正文阅读 |
|
[移动开发]XCTF_MOBILE13_基础android |
初探附件为一个apk,在模拟器里安装一下: 运行后,主界面很简单,一个输入框,一个按钮: ?随便输入一个字符串,点击按钮,提示错误: ?从使用上只有这些信息,接下来反编译看一看。 MainActivity使用jadx打开apk,进行反编译。 先看MainActivity类,代码不多,可以轻松找到其中的按钮事件响应函数:
从代码看,点击按钮后,做四件事:
也就是当我们输入正确的字符串后,就通过了验证,开启MainActivity2。 我们看一下检查函数checkPassword。 checkPasswordcheckPassword函数是Check类的,反编译代码如下:
第一个if判断检查字符串长度是否为12。 之后的for循环要求,对于字符串的每个字符,(255 - 字符索引 - 100 - 字符 )== 0。 也就是,第一个字符为155(255-0-100-155==0),第二个字符为154(255-0-100-154==0),以此类推。 但是十进制值155大于127,没有对应的ascii码字符,没办法通过键盘直接输入。 这里我想到两个思路: 1、修改smali代码,修改 if 语句的判断条件,强行通过验证。 2、继续向下看后续反编译代码,看看能否通过静态分析找到flag。 下面我是按照第二个思路完成了解题,该题目后续并不难。如果有小伙伴知道如何能给该app提供ascii码以外的输入,麻烦教给我~~~~ MainActivity2上面说到,在MainActivity中,如果checkPassword验证成功,就创建MainActivity2,接下来就看看这个类。 这个类代码很少,除了一个简单的init函数,就是一个按钮事件响应函数:
这个按钮事件响应函数就干了一件事,通过sendBroadcast发送广播,广播内容为一个editText控件的字符串。 我们需要找一找谁在处理这个广播消息。 不了解android广播的小伙伴可以看一下这篇文章。其中最重要的就是,广播接收器需要实现为BroadcastReceiver类的子类,并重写onReceive()方法来接收以Intent对象为参数的消息。 这道题的apk中类不多,只有一个为BroadcastReceiver的子类,就是GetAndChange类。这个类的onReceive函数功能就一句话:
也就是收到广播消息后,又启动了一个新Activity,NextContent。 顺着这个流程,我们来看看NextContent类。 NextContentNextContent类的onCreate函数中除了进行一些初始化以外,调用了NextContent类的Change函数,删除掉一些不重要的代码,该函数的核心功能代码可以简化为:
就是将资源里的一个timp_2.zip的资源文件,写到名为imp.jpg的文件。 获得资源文件很简单,直接将apk的后缀名改为zip,进行解压。在解压后的assets目录下就能找到资源文件: ?对资源文件进行重命名后,得到一个图片: ?flag就在图片上了。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 18:46:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |