UNCLE 发表于 2016-2-25 15:36

2016zctf_android1-200 writeup-【详细】

本帖最后由 UNCLE 于 2016-3-1 18:18 编辑

ctf题目就不说了,不重要~~(原题在最后有下载)使用jeb查看源码,发现对username和passwd进行部分验证后,再将将username+passwd及一个数据库查询结果作为Auth.auth()方法的参数,如果返回值为1则激活另外一个活动app仔细查看类app的源码发现这个类对传入的passwd参数做了是否为空的校验,后面将密码传入jni中把passwd作为des解密密钥使用了,所以需要知道passwd是什么。如下的数据库查询,是将key.db使用select * from key where id = 0语句查询,结果为zctf2016。(数据库为SQLite,可以工具打开key.db直接查看)有趣的是源码中不但有加密函数,也有解密函数。所以带入文件内容和解密函数写一小段代码就能把密


   码算出来。
      byte[] bsrc = { (byte) 0xd3, 0x3a, (byte) 0x60, (byte) 0xc4, (byte) 0x74, (byte) 0xf1, (byte) 0x0a, (byte) 0x0a,(byte) 0x0d, (byte) 0x71, (byte) 0x64, (byte) 0x82, (byte) 0x57, (byte) 0x26, (byte) 0x68,(byte) 0xd1 };
      byte[] bres = new byte;
      try {
            bres = decrypt(src, "zctf2016".getBytes());
      } catch (Exception e) {
            e.printStackTrace();
      }
      String s_res = new String(bres);
      System.out.println(bres);

输出结果为”}sihttoN{ftcz”,记得字符串是被反向的,正确的应该为zctf{Notthis}。故用户名为zctf密码为{Notthis}








接着在app中有结束进程的代码所以这里要修改代码 例如将!=0改成==0。即,if-eqz改成if-nez(汇编代码和反编译代码逻辑有些许不同) 然后JNIclass的add貌似是一个检测是否为调试状态的函数,并不知道参数的1和2有什么用,反正我没有修改这里也没有任何问题。最后调用了sayHelloInc()
在ida中f5查看源码,首先判断了是否为调试状态(later_Java_com_zctf_app_JNIclass_add函数),如果不是就打开bottom文件,读取并以{Notthis为密码做des解密。然后马上释放掉存储解密内容和源文件的空间,最后返回。需要在later_Java_com_zctf_app_JNIclass_add执行完后面下断点,调试时修改返回值在这里停下来之后修改r0的值并且在free前面停下来,在f5反编译出的代码中可以看出v15为bottom文件内容,v23存放解密后的内容,即R5和R7,找到R7所指向的,并在hex view下选定范围并另存为png文件。最后用stegsolve打开图片发现flag。这个写得比较粗略,如果有疑问的敬请提出,虽然知道的不多但是我会尽量回复的。
链接: http://pan.baidu.com/s/1i4v3DoL 密码: xsq5

zy2pj 发表于 2016-3-26 08:59

UNCLE 发表于 2016-3-25 19:20
请问一下现在这个问题解决了吗,我居然才发现这个问题,实在是对不起~~

前面的那个是评分。。。好像默认是倒序排列的。。。

这个问题我在网上搜了一下,找到一个类似的问题,
https://finn.svbtle.com/remotely-debugging-android-binaries-in-ida-pro,

但是按照他的设置把android_server放到模拟器里执行后还是不行,因为我的虚拟设备没有root,没法用su登录root权限执行,用的普通用户执行的,不知道是不是和这个有关?

楼主你ida调试的时候没有遇到这种问题吗?

UNCLE 发表于 2016-3-2 07:14

WildWolf 发表于 2016-3-1 16:44
楼主,请教一下jeb的安装教程,压缩文件夹下面的jeb_wincon.bat,提示命令语法不正确,该如何解决

怎么会出现这种问题{:1_907:},你是在爱盘下载的? 设置好JAVA_HOME就可以了,怎么会有语法不正确的问题呢
http://down.52pojie.cn/Tools/Android_Tools/jeb-1.5.201508100_full_floating_cracked_colordancer.zip

JPK 发表于 2016-2-26 16:42

支持下你!! 写的很不错!

OmJJWang 发表于 2016-2-26 17:29

加精了,虽然我不知道主题是什么意思,就看了大幅的代码

UNCLE 发表于 2016-2-26 18:08

OmJJWang 发表于 2016-2-26 17:29
加精了,虽然我不知道主题是什么意思,就看了大幅的代码

这个是最近zctf其中一道题的详细解题过程,官方给的都非常粗略

枫MapleLCG 发表于 2016-2-26 18:50

论坛大牛指日可待

冒充歌神 发表于 2016-2-26 19:47

论坛大牛指日可待

UNCLE 发表于 2016-2-26 19:55

大家言重了,其实没什么{:1_907:}

秋海明月 发表于 2016-2-26 22:40

学习一下。

wqbt 发表于 2016-2-27 10:44

写的很详细,部分地方还没看懂。再研究会。

UNCLE 发表于 2016-2-27 13:01

wqbt 发表于 2016-2-27 10:44
写的很详细,部分地方还没看懂。再研究会。

有什么没看懂的直接说,我还可以完善一下来理清我的思路
页: [1] 2 3 4 5 6 7 8
查看完整版本: 2016zctf_android1-200 writeup-【详细】