XCTF-mobile app2

Ailis ·
更新时间:2024-11-13
· 821 次阅读

app2-安卓逆向1.提取文件2.分析文件3.分析XML文件4.经过验证得到flag5.其他解法
下载地址:点此下载 1.提取文件

更改app安装包后缀为zip
在这里插入图片描述
把这3个文件解压出来
在这里插入图片描述
然后使用dex2jar将dex文件转换为jar文件,得到一个jar文件,这个文件中包含了大部分程序逻辑
在这里插入图片描述
再使用AXMLPrinter2.jar对AndroidManifest.xml进行解包
在这里插入图片描述

2.分析文件

使用JD-GUI分析jar文件
在这里插入图片描述
找到MainActivity.clss,因为正常情况下MainActivity是app加载的第一个页面。
在这里插入图片描述
可以看到程序获取两个编辑框的内容,通过Intent机制调用SecondActivity
在这里插入图片描述
跟过去看下
在这里插入图片描述
质量把两个编辑框的内容相连,通过doRawData函数加密后与VEIzd/V2UPYNdn/bxH3Xig==对比,跟到doRawData函数中,查看函数逻辑
在这里插入图片描述
这个函数是定义在共享库中的,找到解压出来的lib文件
在这里插入图片描述
lib文件下有3个文件夹,每个文件夹里都有一个so文件,没关系,都是一样的,只是不懂平台调用不懂的库文件。随便找一个,拖入IDA
在这里插入图片描述
找到这个函数。这里IDA分析的有点问题,手动把这个函数形参a1的类型改为JNIEnv*,在变量上按Y就可以修改类型
在这里插入图片描述
发现这是一个AES加密,密钥是"thisisatestkey=="
在这里插入图片描述
解密脚本,或者使用在线解密网站,对一开始发现的这个密文进行解密。
在这里插入图片描述

import base64 from Crypto.Cipher import AES cipher=base64.b64decode("VEIzd/V2UPYNdn/bxH3Xig==") key = "thisisatestkey==".encode("utf-8") aes = AES.new(key,AES.MODE_ECB) msg = aes.decrypt(cipher) print(msg.decode("utf-8"))

的到明文

aimagetencent

经过尝试,这个不是flag,在app中输入,得到的也不是flag
在这里插入图片描述

3.分析XML文件

发现这个页面app总共有3个Activity,MainActivity、SecondActivity都分析过了,只有FileDataActivity还不懂它是干啥的,回到JD-GUI中找到FileDataActivity.class。发现还有一个密文,在IDA中跟下,看看decode是干啥的
在这里插入图片描述
在这里插入图片描述
应该是AES解密
在这里插入图片描述

4.经过验证得到flag Cas3_0f_A_CAK3 5.其他解法 #连接虚拟机 adb connect 127.0.0.1:62001 #获取shell adb shell #使用am start调用FileDataActivity页面 am start com.tencent.testvuln/.FileDataActivity

在这里插入图片描述
得到flag
在这里插入图片描述


作者:夏了茶糜



xctf app

需要 登录 后方可回复, 如果你还没有账号请 注册新账号