攻防世界逆向高手题之What-does-this-button-do

本文讲述了博主如何通过分析攻防世界逆向高手题的APK文件,逐步解构并解读XML、APK结构,使用JEB和jd-gui工具反编译代码,最终揭示隐藏的flag:w4nn4_j4r_my_d3x。展示了从解压到源码解析的详细步骤和技术应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

攻防世界逆向高手题之What-does-this-button-do

继续开启全栈梦想之逆向之旅~
这题是攻防世界逆向高手题的What-does-this-button-do
在这里插入图片描述

照例下载附件,解压,是一个rev200的文件,没有后缀,照例扔入exeinfope中查看主要信息:
在这里插入图片描述
在这里插入图片描述

显示是zip文件,那压缩软件打开解压一下看看:
![在这里插入图片描述](https://img-blog.csdnimg.cn/611ea4920b6d4d7c8e0d4b844f42184b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rKQ5LiAIMK3IOaelw==,size_20,color_FFFFFF,t_70,g_se,x_16。

.
.
以下内容摘自北风博客:https://blog.youkuaiyun.com/weixin_45055269/article/details/105988404

xml格式:被设计用来传输和存储数据,就是格式化了的纯文本。(优点:跨平台)
.
apk文件结构:
android应用是用java编写,利用Android SDK编译代码,并把所有的资源文件和数据打包成APK文件。
一个APK文件就是一个.zip格式的压缩包,可以用解压缩文件打开任何一个APK文件,由于代码混淆和加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码。
典型apk文件
在这里插入图片描述

.
.
确定是android文件后,把原来没有后缀的文件加个apk后缀运行一下:
在这里插入图片描述
在这里插入图片描述

照例JEB打开该APK文件分析一下源代码:
在这里插入图片描述

python逻辑仿写代码:

=[102, 108, 97, 103, 0x7B, 0x77, 52, 110, 110, 52, 0x5F, 106, 52, 0x72, 0x5F, 109, 0x79, 0x5F, 100, 51, 120, 0x7D]
flag=""
for i in s:
	flag+=chr(i)
print(flag)

.

结果:(去掉flag前缀再提交)
在这里插入图片描述
.
.
然后结合别人的资料继续分析,看看有没有别的骚操作,发现mainactivity函数照样可以分析出flag来,点击的onclick事件也在里面:
在这里插入图片描述
在这里插入图片描述

继续查看资料发现他们还用dex2jar工具把文件夹中的classes.dex字节码文件编译成jar文件后再用jd-gui打开查看源码。
我对这一顿操作不明觉厉,感觉是JEB主要用来反编译apk文件的,jd-gui是用来反编译jar可执行文件的,由于一开始的附件并没有apk后缀,所以其他师傅们就从jar文件入手了:(但是我直接改成了apk后缀,我真是牛逼)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

所以最终flag:
w4nn4_j4r_my_d3x
.
.
.
解毕!敬礼!

### 关于 '攻防世界' 的 CTF 活动 #### 背景介绍 “攻防世界”是一个专注于网络安全竞赛的平台,提供多种类型的挑战供参赛者练习和提升技能。这些挑战通常分为多个类别,例如 Web 安全、密码学(Crypto)、逆向工程(Reverse Engineering)、取证分析(Forensics)以及杂项(Miscellaneous)。其中,“Test-flag-please-ignore” 是属于 MISC 类别的一个经典目。 --- #### 杂项类目概述 MISC 类型的目往往涉及一些基础的信息处理技术,比如编码转换、数据解析等。对于 “Test-flag-please-ignore”,其核心在于 **十六进制字符串解码** 和最终 Flag 的提取过程[^1]。 --- #### 目描述与已知条件 根据参考资料中的描述,该目的主要操作流程如下: 1. 下载并解压缩 `misc10.zip` 文件后获得了一个 `.txt` 文本文件。 2. 文件内容显示为一段十六进制表示形式的字符串: ```plaintext 666c61677b68656c6c6f5f776f726c647d ``` 3. 初步提交此原始字符串作为 Flag 后验证失败,因此推测需要进一步处理。 4. 经过观察得知上述字符由标准 ASCII 编码范围内的数值构成 (即包含字母 A-F 及数字),可确认这是一个典型的十六进制编码格式[^2]。 --- #### 解决方案详解 为了成功获取目标 Flag,需执行以下具体步骤: 1. 使用工具或者编程手段完成从十六进制到明文字符串的转换工作。以下是 Python 实现方式的一个例子: ```python hex_string = "666c61677b68656c6c6f5f776f726c647d" decoded_flag = bytes.fromhex(hex_string).decode('utf-8') print(decoded_flag) ``` 输出结果应为预期的 Flag 值:`flag{hello_world}`[^3]。 2. 将转化后的正确答案按照指定格式输入至答界面即可得分。 --- #### 技术要点总结 此类问的关键点在于识别给定数据的实际含义及其可能存在的隐藏模式。在此案例中,掌握基本的数据编码知识尤为重要,尤其是熟悉如何在不同进制之间相互切换的能力。此外,利用现有的在线资源和服务也可以极大地简化手动计算的过程^。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐一 · 林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值