打开app,有两个输入框和一个按钮。点击按钮会跳转到新的页面显示Waiting for you.

打开JEB反编译。

如果两个输入框的长度都不为0,那么获取这两个值到v0和v1中,Log记录日志。

创建了一个Intent对象v2,参数是Context和SecondActivity类。

网上查了查Context的概念。

Context可以理解成一个聚宝盆,在当前环境下你能拿到的参数都可以从context出发去拿,而不仅仅是放URL的.从里面可以拿到request,session,response.......,可以说只要你拿到了context就可以访问任何你有权限访问的东西。

这里我理解的是,这个Context是一个容器,它里面包含了程序执行到这一步时所有的数据。当然,在输入框中输入的信息也被包含在这个Context中。

再往下用putExtra给输入的字符串做映射,也就是说ili和lil分别成为了v0和v1的键名。

以上相当于做一些初始化工作,最后调用startActivity函数启动。

由于在创建Intent对象时用到了SecondActivity类,所以我们跟进查看。

v1和v2读取键名获得输入的字符串。在if判断中把v1和v2相加,调用native层的doRawData函数,再将返回值与VEIzd/V2UPYNdn/bxH3Xig==作比较。

到这里思路就清晰了,只要找到加密算法,写出逆向脚本就能得到flag了。

打开lib文件夹中的so。(这里需要注意的是,要打开armeabi-v7a才行。我一开始打开的是armeabi,这个文件中缺少decode和dorawdata函数,不知道为什么)

放到IDA中,找到dorawdata函数。这里首先要在变量a1上按y,改名为JNIEnv*,这样IDA才能正确分析。如下图所示。

也不用分析了,就是一个AES加密。

用python脚本解密如下图。

我以为,aimage是用户名,tencent是密码,这样输入进去就得到flag了,结果并不行。然后把各种组合都试了一遍同样如此。

原因可能是后面的0x03的缘故吧。

之后想起来在另一个类中也存在着一串字符,如下图。

尝试解密,得到明文后提交flag居然就成功了╮(╯▽╰)╭。下面是python脚本:

import base64
from Crypto.Cipher import AES
cipher=base64.b64decode("9YuQ2dk8CSaCe7DTAmaqAA==")
key="thisisatestkey=="
aes=AES.new(key,AES.MODE_ECB)
msg=aes.decrypt(cipher)
print msg

这个题虽然做出来了,但还是觉着理解的不够透彻。原因是对安卓开发的知识了解的太少,这也没办法,从来没写过一个app,上哪摸开发经验去,只感觉逆向这坑真是深。

这题不难,可以说是很简单的那种。之前做过的题,没有这么多废代码(对解题无用的代码),几乎每一行代码都能用得上。乍一做这题,咋这么多类,瞬间就没有了解题的斗志了。还是到了第二天静下心来才解决的。

唉,说白了,还是菜。

XCTF (app2)的更多相关文章

  1. 攻防世界(XCTF)WEB(进阶区)write up(四)

    ics-07  Web_php_include  Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...

  2. 攻防世界(XCTF)WEB(进阶区)write up(三)

    挑着做一些好玩的ctf题 FlatScience web2 unserialize3upload1wtf.sh-150ics-04web i-got-id-200 FlatScience 扫出来的lo ...

  3. 攻防世界(XCTF)WEB(进阶区)write up(一)

      cat ics-05 ics-06 lottery Cat XCTF 4th-WHCTF-2017 输入域名  输入普通域名无果  输入127.0.0.1返回了ping码的结果 有可能是命令执行 ...

  4. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  5. xctf进阶-unserialize3反序列化

    一道反序列化题: 打开后给出了一个php类,我们可以控制code值: `unserialize()` 会检查是否存在一个 `__wakeup()` 方法.如果存在,则会先调用 `__wakeup` 方 ...

  6. 日常破解--从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库

    一.题目来源     题目来源:XCTF app3题目 二.解题过程     1.下载好题目,下载完后发现是.ab后缀名的文件,如下图所示:     2.什么是.ab文件?.ab后缀名的文件是Andr ...

  7. 日常破解--XCTF easy_apk

    一.题目来源     来源:XCTF社区安卓题目easy_apk 二.破解思路     1.首先运行一下给的apk,发现就一个输入框和一个按钮,随便点击一下,发现弹出Toast验证失败.如下图所示: ...

  8. XCTF练习题-WEB-webshell

    XCTF练习题-WEB-webshell 解题步骤: 1.观察题目,打开场景 2.根据题目提示,这道题很有可能是获取webshell,再看描述,一句话,基本确认了,观察一下页面,一句话内容,密码为sh ...

  9. 【XCTF】ics-04

    信息: 题目来源:XCTF 4th-CyberEarth 标签:PHP.SQL注入 题目描述:工控云管理系统新添加的登录和注册页面存在漏洞,请找出flag 解题过程 进入注册页面,尝试注册: 进行登录 ...

随机推荐

  1. CSS3 zoom 属性

    zoom:normal | <number> | <percentage> 默认值:normal normal: 使用对象的实际尺寸. <number>: 用浮点数 ...

  2. (十一)zabbix监控mysql

    1)配置脚本获取mysql的各种参数 注意:脚本中定义host #vim /etc/zabbix/zabbix_agentd.d/mysql_status.sh #!/bin/bash MySQlBi ...

  3. maven 项目下 Maven Dependencies 下列表为空

    问题如题,如下图: 解决: 选中 Maven Dependencies ,右键 属性 如下图: 把   resolve dependencies from workspace projects   这 ...

  4. 编译gpu集群版caffe

    在这个版本安装之前,要先装好opencv,openmpi等. 下载地址:https://github.com/yjxiong/caffe.git 我的opencv是2.4.12版本 编译是用了: cm ...

  5. hadoop中的JournalNode

    1.在HADOOP扮演的角色 JournalNode是在MR2也就是Yarn中新加的,journalNode的作用是存放EditLog的, 在MR1中editlog是和fsimage存放在一起的然后S ...

  6. PHP类知识----foreach

  7. 03 深入远程执行:target目标、模块modules、返回returns

    0.学习目的 http://docs.saltstack.cn/topics/execution/index.html  官方文档 0.1 命令解释 [root@host---- ~]# salt ' ...

  8. 【leetcode】1283. Find the Smallest Divisor Given a Threshold

    题目如下: Given an array of integers nums and an integer threshold, we will choose a positive integer di ...

  9. Elasticsearch:运用shard filtering来控制索引分配给哪个节点

    在我们的实际部署中,我们的各个node(节点)的能力是不一样的.比如有的节点的计算能力比较强,而且配有高性能的存储,速度也比较快,同时我们可能有一些node的能力稍微差一点,比如计算能力及存储器的速度 ...

  10. Python之multiprocessing模块的使用

    作用:Python多进程处理模块,解决threading模块不能使用多个CPU内核,避免Python GIL(全局解释器)带来的计算瓶颈. 1.开启多进程的简单示例,处理函数无带参数 #!/usr/b ...