吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2829|回复: 5
收起左侧

[Android CTF] XCTF_app3_Moblie插Log做法详细wp

[复制链接]
StarryStars 发表于 2020-3-13 12:09
写在前面  恶心死我了,这题真恶心到我了,要说难吧,也不难,逻辑清晰条理清楚,用了半个小时不到就拿到了密码,但是!说好的Demo.db怎么就变成了Encryto了正式  开门见山得说,这个.ab文件是第一次见,不过随便搜一下就懂了:https://blog.csdn.net/qq_33356474/article/details/92188491  然后就是要把ab文件转换为tar或者rar的压缩格式,命令就是:java -jar abe.jar "******/app3.ab" app3.tar,顺带放上abe下载地址,不用纠结abe和abe-all有啥区别,实测一样:https://github.com/nelenkov/android-backup-extractor/releases  解压,找到了我们想要的东西   1870041-20200312202746122-1401555520.png   在a目录下有个apk,先跑模拟器   1870041-20200312202852579-868390495.png   后来测试了一下,不管输入什么都是这个界面,我的第一想法还是估计就是找账号密码然后得到flag。但是!我是万万没想到当我看到java的时候会是这个样子:   1870041-20200312203058315-861856127.png   好,牛逼,高还是你高,用了Intent传了两个参过来,竟然啥都没干,就是让他弹了个窗
  行吧,出题人大于一切,那就看看他干啥了吧    1870041-20200312203520804-1431880377.png     乍一看没啥意义,但是这里说了几个挺重要的信息的,翻译一下:  “Is_Encroty----1”:  加密了  “Encryto----SqlCipher”:  用的Sqlcioher加得密  “ver_sion----3_4_0”:  SqlCipher的版本是3.4.0
    这里得再说说SqlCipher,做了7个小时的题,半个小时找密匙,五个小时上网课,别的时间都被这东西恶心到了  说是不可能说的,看别人的博客吧:https://blog.csdn.net/jiyafeng/article/details/89634681  再注意Sqlcipher的下载地址,如果你用的是windows别下错了:https://github.com/CovenantEyes/sqlcipher-windows/releases  之后要用到这个东西,就不再多说了,而且这里要用的是3.4.0的版本,这玩意不同版本之间加密还不一样的,注意版本,但是你如果下的是windows版本最高版本也就3.0.1,我实测也是可以解密出来的,但如果你在linux环境的话就要注意用3.4.0版本。     好,回到java层,最后一行调用了a(),那就看a()   1870041-20200312204344736-1385623621.png     ContentValues是一种数据结构,再看看这个Demo.db,那估计就是一个数据库了,name和password是列名,Stranger和123456就是值了,那后面那一片啥意思呢,不明白,看看这个数据库怎么创建的吧   1870041-20200312204708588-1376787029.png   看到这亲切的SQL语句,再看看这亲切的Flag,爱了爱了,这时候我感觉我离胜利只差一步之遥了       那就仔细得看看后面的内容,但是!当我仔细看了两次调用之后,我放弃了   1870041-20200312204956378-168971505.png     看看这一长串的字符操作,打扰了,反正在主活动里边还要拿出来用,那就插Log呗,我之后再找数据库加密的时候看了不少WP,好像大家都热衷于重写加密函数,但是能插LOG岂不美哉   1870041-20200312205200466-1378518969.png     在substring函数后边插入我们想要的log,注意修改寄存器,如果你用v0,v1,v2,v5都会崩溃,因为后边调用了    const-string v4, "flag"    invoke-static {v4, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I    在用AK自带的log查看,你们可以定位Tag的,不过我忘了      呐,这就是我们想要的东西了,但是这玩意看着不像Flag啊,没事,死马当活马医,提交试试——>失败       emmmmmmmmmm  好的,让我们重新开始,首先排除法,我们这得到的东西没用   那既然有用那是啥用,然后我目光回到了最开始在create里边的三行东西的核心,即“SqlCipher”   然后经过了一系列查询,我得到了我之前写的那些结论
  然后cmd,开始破解数据库,当然我还经历了尝试Demo.db,毕竟题目里给的是这个,但是我是万万没想到他用的是包目录下的Encryto.db文件    1870041-20200312205958309-186293314.png     命令:      sqlcipher-shell64.exe encryto.db      sqlite> PRAGMA key = ‘ae56f99’;
      sqlite> ATTACH DATABASE ‘app3_1.db’ AS plaintext KEY ‘’;
      sqlite> SELECT sqlcipher_export(‘plaintext’);
      sqlite> DETACH DATABASE plaintext;

  要cd进入到sqlcipher的bin目录,或者直接在那开powershell也是一样的,这应该不用多说,上面命令的encryto.db也只是我举的一个例子,真的自己做也要注意路径,可能我的截图更有参考性一些。   然后在sqlcipher-shell64.exe路径下就能看到想要的东西啦   1870041-20200312211125191-866720382.png     然后用SQLite Exper打开就好了,他已经没加密了   1870041-20200312211214138-2113513061.png     你说这个Stranger和123456都和刚刚一样为啥不也就直接把flag放那呢,也省了这么多事不是吗,哦,这还不是最后一步啊,那没事了      最后点开F_l_a_g的内容,一看最后的=号,不BB,base64警告,不知道base64的我之前也写过,也链接在那了,个人觉得还是挺好理解的hhh,网上随便找个在线解密就好了   1870041-20200312211555671-242532534.png     结束(出题人是腾讯的嘛,看到了一堆Tencet***)         emmmmmm第一次在论坛发帖,我也在论坛看到了windy_ll师傅的做法,不过思路不一样倒也不是撞了,而且windy_ll师傅竟然能直接打开SqlCipher加密的数据库,估计是加了些东西或者省略了解密步骤,我的这些应该对于纯小白还是有些借鉴作用的。不太熟悉论坛的发帖,图片可以不太正常,大家凑活看。中间AK日志的图片是我从我的博客直接贴地址过来的,要是还有不懂的地方我再修改吧。。。

免费评分

参与人数 4威望 +1 吾爱币 +24 热心值 +4 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
weigaojing + 1 + 1 用心讨论,共获提升!
西枫游戏 + 1 + 1 对CTF题有特别的好感,
windy_ll + 2 + 1 打破0评分

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| StarryStars 发表于 2020-3-13 15:22
emmmmm果然格式很乱,我把我的博客的地方放着吧,可能看着舒服点:https://www.cnblogs.com/CimeLi/p/12286821.html
lies2014 发表于 2020-3-13 21:17
hyoulin68 发表于 2020-3-14 09:11
Delphi7 发表于 2020-3-14 12:34
牛比,学习了
 楼主| StarryStars 发表于 2020-3-15 18:17
lies2014 发表于 2020-3-13 21:17
格式乱的惨不忍睹

emmmm不好意思,我也没想到我直接复制过来结果换行不一样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表