EVABS通关笔记(二)
第七关(导出)
提示:其中一个EVABS 开发者创建了一个隐藏服务。你能启动它吗?
HINT:什么是出口activity ?什么是安全问题?
在 Android
应用程序中有activity
的概念。Android
中的 Activity
是所有 Activity
与用户交互的地方,因为所有应用程序屏幕都必须“附加”
在 Activity
上。
有关活动的信息保存在AndroidManifest.xml
文件中,该文件出现在<activity ..... />
标记中。这张卡片有一个重要的属性:android:exported
。如果此属性的值为true
,则该活动可能由其他应用程序触发。
检查清单时,在第四行有关于导出的 Activity
的信息:
当一个activity
被导出时,我们可以用 adb
启动它。使用 adb
通过以下命令触发导出的activity
adb shell am start -n [包名]/[包名].[需要导出的activity]
即可看到Flag
第八关(解码)
提示:使用EVABS编译了一个解锁gravity校准模块的编码密钥,但该密钥似乎被一分为二。你能破解消息来源,看看消息是什么吗?
HINT:将APK转换为Java?
硬编码的重要字符串并不安全,因为攻击者可以轻松地逆向 apk 文件并找到这些字符串。
我们这里使用jadx
反编译App,找到level8的 Decode
转为Smali,可以看到三个硬编码文本,将其转换就可以得到Flag
第九关(Smali 注入)
提示:实验室的房间是关着的。它必须通过实验室的“LAB_ON”信号打开
HINT:apktool?编辑Smali?重新打包?
这一关需要 修改smali
,我们这里使用jeb3
查看一下
可以看到变量SIGNAL="LAB_OFF"
下面判断,LAB_OFF
等不等与LAB_ON
,这里肯定是不成立的,所以会走到else
这里为了方便,我们可以从判断下手,我们反编译App
,查看smali
文件 com.revo.evabs
,找到SmaliInject$2.smali
,修改LAB_ON
为LAN_OFF
,使得表达式成立
Smali基础: 这里不推荐,请各位自行了解
回编译出现styles.xml的错误:https://blog.csdn.net/lovelease/article/details/54914249
第十关(Interception)
提示:有一些数据正在传输到服务器。但是反向通信通道被破坏了。EVABS无法接收该消息。你能告诉我你是怎么得到这个消息的吗?
HINT:我们能否拦截来自/前往Android服务器的流量,并可能对其进行修改?
这里不讲,抓包拦截的,如果不会,请百度
第十一关(自定义访问)
查看:EVABS的底层通信接收器装有飞船的sensor keys。我们需要钥匙来重新激活传感器。但是,通信需要一个特定的接收器。在飞船升空之前拿到它
HINT:你能欺骗一个自定义动作吗?
这里我们必须找到正确的输入,在JEB3
上查看源代码CustomAccess
可以很容易地看到正确的输入是 cust0m_p3rm
。
输入正确的输入后,flag将通过 putExtra()
函数传递给intent com.revo.evabs.action.SENSOR_KEY
。(这一块我用的jadx看,比较好看一些,看个人习惯用)
核心思路就是,他这里用的隐式启动,没有指明到底是哪个activity
,所以系统上所有的注册了这个action
的activity
都会被列出来让用户选择
让这个EVABS去启动自己写的activity
,这样你就能拿到那个intent
,可以从里面取到Flag
我们需要在AndroidManifest.xml
中指定action,category,data
参考资料:https://blog.csdn.net/lixpjita39/article/details/78201689
运行
指明后会出现注册了该活动(action)的应用
Flag
第十二关(Instument)
HINT:动态仪器是什么?(我也不知道翻译后是啥意思)
查看frida1 源码
这一题的逻辑比较简单,50行
X要大于rand的值才会输出flag,45行
查看rand的值来至random范围是0-70,在+150,A和B是固定值 44
行相乘也才50,不管rand怎么随机值的 X都不可能大于rand
可以使用frida修改
这里我Frida 出现错误了,嘤嘤嘤