EVABS通关笔记(二)

第七关(导出)

Image.png

提示:其中一个EVABS 开发者创建了一个隐藏服务。你能启动它吗?
HINT:什么是出口activity ?什么是安全问题?
Image.png

Android 应用程序中有activity 的概念。Android 中的 Activity 是所有 Activity 与用户交互的地方,因为所有应用程序屏幕都必须“附加”Activity 上。
有关活动的信息保存在AndroidManifest.xml文件中,该文件出现在<activity ..... /> 标记中。这张卡片有一个重要的属性:android:exported。如果此属性的值为true,则该活动可能由其他应用程序触发。
检查清单时,在第四行有关于导出的 Activity 的信息:
Image.png

当一个activity被导出时,我们可以用 adb 启动它。使用 adb 通过以下命令触发导出的activity

adb shell am start -n [包名]/[包名].[需要导出的activity]

Image.png

Image.png

即可看到Flag

第八关(解码)

Image.png

提示:使用EVABS编译了一个解锁gravity校准模块的编码密钥,但该密钥似乎被一分为二。你能破解消息来源,看看消息是什么吗?
HINT:将APK转换为Java?
Image.png

硬编码的重要字符串并不安全,因为攻击者可以轻松地逆向 apk 文件并找到这些字符串。
我们这里使用jadx反编译App,找到level8的 Decode
Image.png

转为Smali,可以看到三个硬编码文本,将其转换就可以得到Flag
Image.png

Image.png

第九关(Smali 注入)

Image.png

提示:实验室的房间是关着的。它必须通过实验室的“LAB_ON”信号打开
HINT:apktool?编辑Smali?重新打包?
Image.png

这一关需要 修改smali,我们这里使用jeb3查看一下
可以看到变量SIGNAL="LAB_OFF"
下面判断,LAB_OFF等不等与LAB_ON,这里肯定是不成立的,所以会走到else
Image.png

这里为了方便,我们可以从判断下手,我们反编译App,查看smali文件 com.revo.evabs,找到SmaliInject$2.smali,修改LAB_ONLAN_OFF,使得表达式成立
Smali.png

Smali基础: 这里不推荐,请各位自行了解
回编译出现styles.xml的错误:https://blog.csdn.net/lovelease/article/details/54914249

第十关(Interception)

Image.png

提示:有一些数据正在传输到服务器。但是反向通信通道被破坏了。EVABS无法接收该消息。你能告诉我你是怎么得到这个消息的吗?
HINT:我们能否拦截来自/前往Android服务器的流量,并可能对其进行修改?
Image.png

这里不讲,抓包拦截的,如果不会,请百度

第十一关(自定义访问)

Image.png

查看:EVABS的底层通信接收器装有飞船的sensor keys。我们需要钥匙来重新激活传感器。但是,通信需要一个特定的接收器。在飞船升空之前拿到它
HINT:你能欺骗一个自定义动作吗?
Image.png

这里我们必须找到正确的输入,在JEB3上查看源代码CustomAccess可以很容易地看到正确的输入是 cust0m_p3rm
输入正确的输入后,flag将通过 putExtra() 函数传递给intent com.revo.evabs.action.SENSOR_KEY。(这一块我用的jadx看,比较好看一些,看个人习惯用)
Image.png

核心思路就是,他这里用的隐式启动,没有指明到底是哪个activity,所以系统上所有的注册了这个actionactivity都会被列出来让用户选择
让这个EVABS去启动自己写的activity,这样你就能拿到那个intent,可以从里面取到Flag
我们需要在AndroidManifest.xml中指定action,category,data
Image.png

参考资料:https://blog.csdn.net/lixpjita39/article/details/78201689
Image.png

运行
指明后会出现注册了该活动(action)的应用
Image.png
Flag
Image.png

第十二关(Instument)

Image.png

HINT:动态仪器是什么?(我也不知道翻译后是啥意思)
Image.png

查看frida1 源码
这一题的逻辑比较简单,50行 X要大于rand的值才会输出flag,45行查看rand的值来至random范围是0-70,在+150,A和B是固定值 44行相乘也才50,不管rand怎么随机值的 X都不可能大于rand
Image.png

可以使用frida修改
这里我Frida 出现错误了,嘤嘤嘤

本文链接:

https://www.linqi.net.cn/index.php/archives/238/