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拖到模拟器安装和运行:

CTF - 攻防世界 - mobile新手 - app3_第1张图片  

CTF - 攻防世界 - mobile新手 - app3_第2张图片

先上反编译,大概翻了一下,貌似在往数据库里写东西

CTF - 攻防世界 - mobile新手 - app3_第3张图片

下载sqlitestudio打开数据库文件,hmm......打不开>_<

又回去翻代码,没看出啥,网上提示dex2jar反编译出来的代码有问题。好吧,拖到idea里面去看下。

dex2jar里面的class b长这样:

CTF - 攻防世界 - mobile新手 - app3_第4张图片

idea里面的class b长这样

CTF - 攻防世界 - mobile新手 - app3_第5张图片

哈哈哈,生活果然处处都是坑,是时候换个大腿了~

CTF - 攻防世界 - mobile新手 - app3_第6张图片

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位

CTF - 攻防世界 - mobile新手 - app3_第7张图片

 执行结果为:Stra1234

2. 对上一步的结果进行mad加密

CTF - 攻防世界 - mobile新手 - app3_第8张图片

自己把class b copy到idea,把参数传进去直接执行就好。表问我怎么copy类、传参和执行,以我并不精通的Java水平说不清楚!

加密后的结果:44e2e4457d4e252ca5b9fe9d20b3fea5

3. 再调一次函数a

执行也就是对Stra123444e2e4457d4e252ca5b9fe9d20b3fea5yaphetshan再进行一次sha-1加密

加密结果:ae56f99638285eb0743d8bf76d2b0c80e5cbb096

4. 最后取上一步加密结果的前七位

最后结果:ae56f99

5.解密完毕

然鹅并木有完结撒花2333,这个解密结果多半是数据库的密码,拿来试试先。

先用sqlitestudio输入密码,木有成功。。。搜了一下,解密是对的,那可能是工具问题,好吧,坑踩完一个又一个,换个工具(DB Browser for SQLite)接着踩~

CTF - 攻防世界 - mobile新手 - app3_第9张图片

就一条数据,base64解密拿到flag:

 

总结:

1.ab后缀的文件是安卓的备份文件,可转换成jar文件

2.工具的多样化,多准备几种工具,这个不行上那个,不要在一个工具上死磕 

 

本文与本人博客园的博客是同步的,博客园地址:https://www.cnblogs.com/sallyzhang/p/14849340.html

你可能感兴趣的:(CTF,移动安全)