首页
社区
课程
招聘
[原创][原创]从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库
发表于: 2020-2-17 15:31 4297

[原创][原创]从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库

2020-2-17 15:31
4297

    题目来源:XCTF app3题目
    PS:这篇文章首先发在吾爱论坛的(id和看雪的id一致),刚注册账号是个临时会员,想混个正式会员就先拿这个筹个数吧,如有违规请管理删帖!!!

    1、下载好题目,下载完后发现是.ab后缀名的文件,如下图所示:

16.jpg

    2、什么是.ab文件?.ab后缀名的文件是Android系统的备份文件格式,它分为加密和未加密两种类型,.ab文件的前24个字节是类似文件头的东西,如果是加密的,在前24个字节中会有AES-256的标志,如果未加密,则在前24个字节中会有none的标志,如下图所示:

12.jpg

    3、怎么获取.ab文件中的数据?在github上有个开源项目Android backup extractor可以将.ab文件转换为.tar文件,然后用解压软件打开即可!!!项目地址:https://github.com/nelenkov/android-backup-extractor

13.PNG

    4、使用ade.jar将1.ab文件转为tar文件解压发现有一个apk文件和两个sqlite数据库文件,将apk安装到夜神中,发现没什么有用的东西,去查看数据库,直接使用sqlitebrowser打开,提示需要密码,看来数据库多半被加密了,如下图所示:

14.PNG

15.PNG

8.PNG

9.PNG

16.PNG

    5、直接使用AndroidKiller和jeb将该APK反编译,发现了存在asset目录和libs目录,并且这两个目录下存放了和sqlitecipher相关的文件,可以推断数据库被sqlitecipher加密了,再搜索一下在夜神里点击登陆后弹出的信息Wait ....,发现该信息在AnotherActivity.java文件中,转为java后,发现没什么有用的信息。。。

4.jpg

10.PNG

    6、于是打开MainActivity.java文件,果然发现了一个函数a(),代码如下:

    7、现在目标已经很明确了,就是获取数据库解密密钥(猜一下flag就藏在加密的sqlite数据库中),而该密钥由com.example.yaphetshan.tencentwelcome.a.a里面的方法生成,而这个类又调用了b.java里面的方法,如图所示:

11.PNG

2.PNG

3.PNG

    8、a、b类里面生成密钥的算法涉及到了sha-1、md5等算法,没必要去重新写一编,搞清楚密钥生成逻辑然后把b类里面的两个函数复制出来调用即可生成密钥,简单分析一下密钥生成逻辑:首先得到变量v2,v2调用了a类中的a(String,String)方法获取,该方法返回第一个参数前四个字符加第二个参数的前四个字符,而调用该方法传进去的参数为(Stranger,123456),所以v2 = Stra1234,密钥为v1.a(String).sunstring()(调用v1.a()方法然后将返回值截取前7位作为密钥),关键就在传进去的这个字符串,可以看到这个字符串是v2 + v1.b(v2,'123456'),而v1.b(String,String)这个函数将调用了b类的a(String)函数,传进去的参数是变量v2,获取到返回值后,我们就可以得到这个字符串,然后调用v1.a(String)函数得到密钥,这个函数将传进去的字符串加上yaphetshan字符串作为参数调用b类的b方法,其返回值取前7位即是密钥,写了一个java获取密钥的代码,运行结果如下(ps:代码粘贴在文末中):

7.jpg

5.PNG

    9、获取到密钥后,使用sqlitebrowser打开加密数据库,发现了一串Base64的字符串,解码得到了flag

1.jpg

    刚下载下来题目发现一看后缀名就慌了,重来没见过的文件了,百度了n久,终于弄懂了android备份文件和ssqlitecipher这两个东西。
    给大家分享一下有关这两个东西的知识点我觉得写的比较好的博客!!!

    题目以及所用到的工具:百度网盘链接https://pan.baidu.com/s/1Wam_Hjg8rNlpqywVqqASpQ,密码0y89

    获取密钥java代码如下:

 
 
 
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-2-27 17:14 被windy_ll编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2020-2-18 11:38
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
3
恭喜转正,另外,建议将题目附件下载到论坛本地备份一份,不然n年后,原来链接可能下载不到题目了。
2020-2-26 17:00
0
游客
登录 | 注册 方可回帖
返回
//