CTF - 攻防世界 - mobile新手 - app3
下载android-backup-tookit:https://sourceforge.net/projects/adbextractor/files/latest/download
执行下面的命令转换ab文件为jar文件:
java -jar abe.jar unpack app3.ab app3.jar
jar包解压后base.apk,Demo.db,Encryto.db三个文件,盲猜应该与数据库,解密相关。
apk拖到模拟器安装和运行:
先上反编译,大概翻了一下,貌似在往数据库里写东西
下载sqlitestudio打开数据库文件,hmm......打不开>_<
又回去翻代码,没看出啥,网上提示dex2jar反编译出来的代码有问题。好吧,拖到idea里面去看下
dex2jar里面的class b长这样:
idea里面的class b长这样
哈哈哈,生活果然处处都是坑,是时候换个大腿了~
class b里面有两个加密函数,一个md5,一个sha-1。再回去MainActivity看下,关键代码就是这几句:
com.example.yaphetshan.tencentwelcome.a.a var2 = new com.example.yaphetshan.tencentwelcome.a.a(); String var3 = var2.a(var1.getAsString("name"), var1.getAsString("password")); String var4 = var2.b(var3, var1.getAsString("password")); String var5 = var2.a(var3 + var4);
this.a = this.b.getWritableDatabase(var5.substring(0, 7));
加密的步骤是这样纸的:
1. 调用函数a,对输入的name和password个取前4位
执行结果为:Stra1234
2. 对上一步的结果进行mad加密
自己把class b copy到idea,把参数传进去直接执行就好。表问我怎么copy类、传参和执行,以我并不精通的Java水平说不清楚!
加密后的结果:44e2e4457d4e252ca5b9fe9d20b3fea5
3. 再调一次函数a
执行也就是对Stra123444e2e4457d4e252ca5b9fe9d20b3fea5yaphetshan再进行一次sha-1加密
加密结果:ae56f99638285eb0743d8bf76d2b0c80e5cbb096
4. 最后取上一步加密结果的前七位
最后结果:ae56f99
5.解密完毕
然鹅并木有完结撒花2333,这个解密结果多半是数据库的密码,拿来试试先。
先用sqlitestudio输入密码,木有成功。。。搜了一下,解密是对的,那可能是工具问题,好吧,坑踩完一个又一个,换个工具(DB Browser for SQLite)接着踩~
就一条数据,base64解密拿到flag:
总结:
1.ab后缀的文件是安卓的备份文件,可转换成jar文件
2.工具的多样化,多准备几种工具,这个不行上那个,不要在一个工具上死磕