EVABS通关笔记(一)
环境:
WIndows10
安卓9 Pixel
下载https://github.com/abhi-r3v0/EVABS
可自行编译或在debug目录下找到编译好的apk
然后在得知Flag的格式为EVABS{}
一共有12关,我们一个个来~
第一关(调试)
HINT:(如何使用ADB查找Android device中运行应用程序的日志)
使用adb logcat 查看会显的特别的无厘头,有特别多系统的日志,然后我们需要筛选应用程序日志
我们运行adb shell ps
列出应用程序的PID,使用findstr
筛选 是否包含包名,得知PID=28734
adb logcat --pid=这里是PID 查看logcat
点击LOG THE KEY
第二关(文件访问)
查看提示(您无法读取该文件,因为它安全地存储在系统中)
HINT:您将APK的资产存储在何处?也许你能在apk里面发现
这里我们需要了解Android
目录的结构,将Apk
修改zip
解压,assets
是存储资源文件夹中的一个,打开即可发现Flag
第三关(字符串)
查看提示:重新启动推进器需要Evabs api密钥,而开发人员将其留在了字符串池中
HINT:在Android应用程序中,Strings存储在一个xml文件中。如何找到它?
这里我们需要反编译APP,zip解压只能查看图片和布局,反编译可以看到源文件的所有内容
搜索Strings.xml
或者到res
目录下找到values
目录
即可看到
一般来说很少会有人将重要的信息放到Strings.xml
第四关(资源)
查看提示:一个可以为下一级提供帮助的小工具包的位置信息已经放在“resources”中。去找它
HITN:寻找res资源
通过HINT我们得知Flag在res目录中的某一个文件中,在linux下你可以直接用grep -r
,在Windows中,打开文件夹选项-搜索-始终搜索文件夹和内容....
如果用mac或者linux系统的会方便很多,Windows要翻太久了
最终在raw中找到
第五关(Shares and Prefs)
查看提示:还记得你在开始的时候输入了你的用户名吗?并且还获得了密码。如果不是,你被监视了!
HITN:如何在Android中存储key-value?
SharedPreferences
是一种将数据永久存储在 XML 文件中的 API。SharedPreferences
对象存储的数据具有key-value
结构。
可以为所有使用的应用程序声明 SharedPreferences
对象或者声明为私有的。数据存储在 XML 文件中/data/data/包名/shared_prefs/*.xml
使用 adb shell
通过命令访问 android
系统,我们切入到EVABS
私有目录,进入shared_prefs
,使用grep -r "EVABS" *
搜索
第六关(数据库泄露)
提示:访问mainframe的凭据存储在数据库中。你需要管理员凭据,你能破解吗?
HINT:Android设备中存储的SQLite DB文件在哪里?
Android
应用程序还需要存储本地数据。应用程序用来存储数据的地方之一是 SQLite DB
。这些数据库始终位于/data/data/包名/databases
单击“FETCH CREDS”
按钮后,将在本地存储中生成数据库。
现在运行adb shell su -c "ls /data/data/com.revo.evabs/databases"
以检查任何可用的数据库。这里只有1个db是MAINFRAME_ACCESS。
这里则需要使用adb pull
命令将数据库拉到真机上,使用可以查看SQLite
数据库工具查看adb pull
在大多数情况下是没有权限的,(进入adb shell)我们需要将db文件放入/sdcard/
下
我在/sdcard/
目录下创建了一个文件夹 mkdir /sdcard/androddb/
cp * /sdcard/androiddb/
将所有的数据库复制到androddb里面
在adb pull 即可
具体原理如下:https://bbs.pediy.com/thread-216364.htm