《攻防世界》MOBILE--app3
本帖最后由 HNHuangJingYU 于 2021-9-29 20:33 编辑1.下载附加发现是一个ab文件,好奇去网上搜了,根据博主的步骤后得到了一个tar文件,拿到后里面有个apk文件,照常一样拉进JEB分析,解密命令如下:
Java -jar C:\Users\54622\Downloads\abe-all.jar unpack C:\Users\54622\Desktop\399649a0e89b46309dd5ae78ff96917a.ab C:\Users\54622\Desktop\demo3.tar
2.来到MainActivity就是一个单击跳转和加载数据库文件,进入后发现AnotherActivity里面并没有什么东西,嗯,结合我们刚才得到的tar文件里面也有db文件,那么这题应该就是从数据库入手找flag了,回到tar文件打开db文件发现报错,好家伙,再回JEB进行分析。
3.仔细分析来到SQLiteDatabase类后结合自己的推论,出题人大概率不会自己写一个数据库加载工具类的,再结合该类里面的关键字进行网络搜索后确定了就是sqlcipher进行解密db文件,如图1
4.在MainActivity就有提到SqlCipher关键字然后后面就有个ver_sion版本,因为SqlCipher是需要对应的版本进行解密的下载到对应的版本后进行解密对应解密的步骤各大博主都有,给大家说下我遇到的问题,好像3.0.1的版本也可以使用,进入你下载后的文件的bin目录(因为没有配置环境变量)先输入sqlcipher-shell32D://encrypted.db(这个是你需要解密的db路径) 回车后回进入一个sqlcipher模式,然后再进行对这个文件的解密:
PRAGMA key = '123456';
ATTACH DATABASE 'demo_input.db' AS plaintext KEY '';
SELECT sqlcipher_export('plaintext');
DETACH DATABASE plaintext;
5. 好家伙到了这里发现没有key又返回去找密钥,看到了一个getWritableDatabase方法这个方法就是用来打开数据库的,既然加密了所以方法里面的参数应该就是密钥,直接把JEB中的a类和b类复制过来按照他的写法很快就得出密钥:ae56f99
6. 既然有了密钥就去试试解密数据库把密钥给第4步骤那里的命令补上去再执行命令后,在bin目录下找到demo_input.db这个就是解密后的db文件,用sqlite数据库软件打开db文件如图2:
7. 尝试着提交flag 发现都不行,再次回到JEB分析看到了之前保存的键值对如图3,刚才tar文件里面是不是还有个Encryto.db文件,再次进行db解密后在这里发现了flag如图4,最后提交flag提示正确:VGN0ZntIM2xsMF9Eb19ZMHVfTG92M19UZW5jM250IX0=
页:
[1]