XCTF-easydex
前期工作
查壳,无。安装打开黑屏。
逆向分析
用jadx打开看看
什么都没有,但可以看一下AndroidManifest
可以看到这个是个纯C/C++写的,没有Java代码,是个NativeActivity。
但是后面又有个MainActivity,所以可能是运行so之后就会放出来一个dex。
NativeActivity的启动函数是android_main,进入so中查看android_main
off_43A18存的是0x3CA10
开始把0x7004开始的长度为0x3CA10的数据拷贝到v3里
然后一顿操作后提示
想想都知道正常人是肯定做不到的,继续往下看
v14应该就是手机摇动次数了,如果符合要求的话就解压v3到dest然后写入一个文件。v3存的应该就是dex了。将内容dump下来。
通过对比很明显,这个不是dex,猜测有加密,回到前面看看
这块地方操作了off_43A18和v3,所以这里应该是解密部分,前面应该是获取手机摇动次数。看看这里 发生了什么
编写解密脚本,其实就是将IDA翻译成python
import zlib
with open('d:\\easydex', 'rb') as f:
data = list(f.read())
size = 0x3ca10
times = 0
while True:
if times <= 0x59:
t = int(times / 10)
if times % 10 == 9:
s = int(size / 10)
x = (t + 1) * s
if s * t < x:
c = 0
for _ in range(s):
data[s * t + c] = data[s * t + c] ^ times
c += 1
if times == 0x59:
while x < size:
data[x] = data[x] ^ 89
x += 1
break
times += 1
fbytes = bytes(data)
with open('easydex.dex', 'wb') as f1:
f1.write(zlib.decompress(fbytes))
得到dex放入jadx继续分析
文件结构
MainActivity
监听器是a,
查找这个资源id
猜测是twofish加密了,I have a male fish and a female fish.这个应该是密钥,明文加密钥加密得到m正确即可
再回看MainActivity中的m,居然有负数。其中Byte.MIN_VALUE数值为-128。
查找资料
编写脚本解密后得到的不是可读字符,网上在线twofish的结果是base64编码的,所以将结果进行base64
最终脚本
import base64
flag = [-120, 77, -14, -38, 17, 5, -42, 44, -32, 109, 85, 31, 24, -91, -112, -83, 64, -83, -128, 84, 5, -94, -98, -30, 18, 70, -26, 71, 5, -99, -62, -58, 117, 29, -44, 6, 112, -4, 81, 84, 9, 22, -51, 95, -34, 12, 47, 77]
data = []
for i in flag:
data.append(i&0xff)
print(base64.b64encode(bytes(data)))
拿去解密
得到flag
FLAG
qwb{TH3y_Io<e_EACh_OTh3r_FOrEUER}
总结
做这题真是学到了很多东西,也掌握了一些技巧。首先看到黑屏且没有代码很慌,查看Manifest之后又去查找资料才知道这个是NativeActivity,之后dump内存用的脚本也是上网查找资料才知道又idaapi这种东西,查找字符串资源的时候因为jadx在资源文件中搜不到所以将项目导出后用AndroidStudio打开查找才找得到,什么zlib之类的也是第一次看见,这题查资料学东西花了两天。
XCTF-easydex的更多相关文章
- 攻防世界(XCTF)WEB(进阶区)write up(四)
ics-07 Web_php_include Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...
- 攻防世界(XCTF)WEB(进阶区)write up(三)
挑着做一些好玩的ctf题 FlatScience web2 unserialize3upload1wtf.sh-150ics-04web i-got-id-200 FlatScience 扫出来的lo ...
- 攻防世界(XCTF)WEB(进阶区)write up(一)
cat ics-05 ics-06 lottery Cat XCTF 4th-WHCTF-2017 输入域名 输入普通域名无果 输入127.0.0.1返回了ping码的结果 有可能是命令执行 ...
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- xctf进阶-unserialize3反序列化
一道反序列化题: 打开后给出了一个php类,我们可以控制code值: `unserialize()` 会检查是否存在一个 `__wakeup()` 方法.如果存在,则会先调用 `__wakeup` 方 ...
- 日常破解--从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库
一.题目来源 题目来源:XCTF app3题目 二.解题过程 1.下载好题目,下载完后发现是.ab后缀名的文件,如下图所示: 2.什么是.ab文件?.ab后缀名的文件是Andr ...
- 日常破解--XCTF easy_apk
一.题目来源 来源:XCTF社区安卓题目easy_apk 二.破解思路 1.首先运行一下给的apk,发现就一个输入框和一个按钮,随便点击一下,发现弹出Toast验证失败.如下图所示: ...
- XCTF练习题-WEB-webshell
XCTF练习题-WEB-webshell 解题步骤: 1.观察题目,打开场景 2.根据题目提示,这道题很有可能是获取webshell,再看描述,一句话,基本确认了,观察一下页面,一句话内容,密码为sh ...
- 【XCTF】ics-04
信息: 题目来源:XCTF 4th-CyberEarth 标签:PHP.SQL注入 题目描述:工控云管理系统新添加的登录和注册页面存在漏洞,请找出flag 解题过程 进入注册页面,尝试注册: 进行登录 ...
- 【XCTF】ics-05
信息: 题目来源:XCTF 4th-CyberEarth 标签:PHP.伪协议 题目描述:其他破坏者会利用工控云管理系统设备维护中心的后门入侵系统 解题过程 题目给了一个工控管理系统,并提示存在后门, ...
随机推荐
- [leetcode]29. Divide Two Integers不用除法实现除法
思路是不断将被除数分为两部分,每次分的一部分都是尽量大的除数的倍数,然后最后的商就是倍数加上剩下的部分再分,知道不够大. 递归实现 剩下的难点就是,正负号(判断商正负后将两个数都取绝对值),数太大(将 ...
- springboot容器启动顺序之@Configuration ContextRefreshedEvent事件初始化 ApplicationRunner
笔者最近遇到一个问题 我们根据自己业务需要 需要首次启动springboot项目时 把数据库数据同步至本地缓存(比如ehcache)但有一个要求 在缓存未载入成功 不允许有流量打入 一开始我们使用 ...
- 安装cmake过程g++: 错误:unrecognized command line option ‘-std=gnu++14’
问题根因 这个错误一般是gcc/g++版本太低导致的 疑问 我本地明明安装的是高版本的gcc/g++为何说是低版本的呢,有图为证: 这主要是因为你安装了多个版本的gcc/g++,但是默认(/usr/b ...
- CSS-position 属性&元素脱离文档流引发父级边框塌陷问题
CSS-position 属性 CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动(float)和绝对定位(position). 除非专门指定,否则所有框都在普通流中定位.也就是说,普通流中 ...
- Spring Boot 2.x基础教程:实现文件上传
文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然后再做图片的裁剪,excel数据的解析入库等后续操作. ...
- OSTU大津法图像分割
OSTU图像分割 最大类间方差法,也成大津法OSTU,它是按图像的灰度特性,将图像分成背景和目标2部分.背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分 ...
- LeetCode117 每个节点的右向指针 II
给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每个 ...
- 【Git】2、Linux快速安装Git环境 & oh-my-zsh
Linux快速安装Git环境 文章目录 Linux快速安装Git环境 1.Linux安装Git 2.安装zsh 3.安装oh-my-zsh 3.1.安装oh-my-zsh 3.2. 测试验证 4.小结 ...
- 【TOMCAT】windows7下tomcat6环境部署
首先,下载一个tomcat6的部署包 地址http://download.csdn.net/download/imliuqun123/10156942 需要部署安装的win7环境变量: 1.jdk环境 ...
- 误删数据库怎么办?mysql 回滚,撤销操作,恢复数据
刚刚不小心把数据库删掉了,于是想着上网上找找有没有可以恢复数据库的方法,没想到还真有,除了备份以外,还有以下方法. 在mysql有时执行了错误的update或者delete时导致大量数据错误恢复的办法 ...