新闻详情

新闻详情

首页 / 资讯中心 / 详情

奇怪的APP - CTF逆向题Writeup

发布时间:2026/11/13 9:09:41来源:尧图网络
奇怪的APP - CTF逆向题Writeup
奇怪的APP - CTF逆向题Writeup题目信息题目名称奇怪的APP分值100 pts类型软件逆向工程难度入门描述这个apk安装后怎么怪怪的怎么什么内容都没有。用jadx打开看看呢也许走两步flag就掉出来了吧吧吧吧吧一、环境准备1.1 安装Java环境# 安装OpenJDK 17aptinstallopenjdk-17-jdk-headless-y# 验证安装java--versionjavac--version1.2 下载并安装jadx# 下载jadx预编译版本wgethttps://github.com/skylot/jadx/releases/download/v1.5.0/jadx-1.5.0.zip# 解压unzipjadx-1.5.0.zip# 进入bin目录cdjadx-1.5.0/bin# 给执行权限chmodx jadx jadx-gui# 验证安装./jadx--version二、反编译APK2.1 使用jadx反编译# 基本反编译命令./jadx-doutput chall11.apk# 参数说明# -d : 指定输出目录# output : 输出文件夹名称# chall11.apk : 要反编译的APK文件2.2 查看反编译结果# 查看输出目录结构ls-laoutput/# 查看所有Java文件findoutput-name*.java-typef# 查看AndroidManifest.xmlcatoutput/resources/AndroidManifest.xml三、定位Flag片段3.1 搜索Base64编码字符串# 搜索所有Base64编码的字符串长度≥6可能以结尾grep-r-E[A-Za-z0-9/]{6,}{0,2}output/--coloralways|\grep-v.class|grep-v.dex|grep-v.smali|\grep-v.png|grep-v.jpg参数说明-r: 递归搜索-E: 使用扩展正则表达式--coloralways: 高亮显示匹配内容grep -v: 排除特定文件类型3.2 查看特定文件# 查看AndroidManifest.xmlcatoutput/resources/AndroidManifest.xml# 查看strings.xmlcatoutput/resources/res/values/strings.xml# 查看config.jsoncatoutput/resources/assets/config.json# 查看MainActivity.javacatoutput/sources/com/moectf/apkreverse/MainActivity.java四、解码Base64片段4.1 命令行解码# 解码单个Base64字符串echobW9lY3Rme0Fwa19S|base64-d# 输出: moectf{Apk_RechoX2Z1Tl9yMQ|base64-d# 输出: _fuN_r1echoZ2hUPyEhIX0|base64-d# 输出: ghT?!!!}echoRXYzcnNlXzFz|base64-d# 输出: Ev3rse_1s4.2 Python脚本解码importbase64# 所有片段fragments[bW9lY3Rme0Fwa19S,X2Z1Tl9yMQ,Z2hUPyEhIX0,RXYzcnNlXzFz]# 解码并拼接flagforfinfragments:decodedbase64.b64decode(f).decode(utf-8)print(f{f}-{decoded})flagdecodedprint(f\n完整Flag:{flag})五、完整搜索脚本5.1 一键搜索所有线索#!/bin/bash# 文件名: find_flag.shecho 1. 搜索所有Base64编码 grep-r-E[A-Za-z0-9/]{6,}{0,2}output/--coloralways2/dev/null|\grep-v.class|grep-v.dex|grep-v.png|grep-v.jpg|\grep-vSHA-256|grep-vDigestecho-e\n 2. 查看AndroidManifest.xml catoutput/resources/AndroidManifest.xml2/dev/null|grep-Epermission|meta-dataecho-e\n 3. 查看所有XML资源文件 findoutput-name*.xml-execgrep-H-E[A-Za-z0-9/]{6,}{0,2}{}\;2/dev/nullecho-e\n 4. 查看所有JSON文件 findoutput-name*.json-execcat{}\;2/dev/nullecho-e\n 5. 查看MainActivity catoutput/sources/com/moectf/apkreverse/MainActivity.java2/dev/nullecho-e\n 6. 提取所有Base64片段 grep-r-o-E[A-Za-z0-9/]{8,}{0,2}output/2/dev/null|\grep-v.class|grep-v.dex|sort-u运行脚本chmodx find_flag.sh ./find_flag.sh5.2 Python自动化提取脚本#!/usr/bin/env python3# 文件名: extract_flag.pyimportosimportreimportbase64defextract_base64_strings(directory):提取目录下所有文件中的Base64字符串patternre.compile(r[A-Za-z0-9/]{8,}{0,2})results[]forroot,dirs,filesinos.walk(directory):forfileinfiles:# 跳过二进制文件iffile.endswith((.class,.dex,.png,.jpg)):continuefilepathos.path.join(root,file)try:withopen(filepath,r,encodingutf-8,errorsignore)asf:contentf.read()matchespattern.findall(content)formatchinmatches:iflen(match)8:results.append({file:filepath,encoded:match,decoded:base64.b64decode(match).decode(utf-8,errorsignore)})except:passreturnresults# 提取所有Base64片段resultsextract_base64_strings(output)# 显示结果print(找到的Base64片段)print(-*60)forrinresults:print(f文件:{r[file]})print(f编码:{r[encoded]})print(f解码:{r[decoded]})print(-*60)# 手动拼接根据实际顺序调整fragments[bW9lY3Rme0Fwa19S,RXYzcnNlXzFz,X2Z1Tl9yMQ,Z2hUPyEhIX0]flagforfinfragments:flagbase64.b64decode(f).decode(utf-8)print(f\n完整Flag:{flag})六、发现的所有Base64片段位置编码解码AndroidManifest.xmlbW9lY3Rme0Fwa19Smoectf{Apk_Rstrings.xmlX2Z1Tl9yMQ_fuN_r1config.jsonZ2hUPyEhIX0ghT?!!!}MainActivity.javaRXYzcnNlXzFzEv3rse_1s七、拼接Flag按正确顺序拼接moectf{Apk_R Ev3rse_1s _fuN_r1 ghT?!!!}最终Flagmoectf{Apk_REv3rse_1s_fuN_r1ghT?!!!}八、解题思路总结8.1 题目设计特点代码混淆方法名使用OooO0o0()等混淆名称信息分散Flag被分成4段藏在不同位置编码隐藏所有片段都经过Base64编码组合拼接需要找到正确的顺序Leet Speak使用数字替换字母3→e1→i8.2 解题步骤✅ 使用jadx反编译APK✅ 搜索Base64编码的字符串✅ 逐个解码片段✅ 按正确顺序拼接✅ 提交Flag8.3 常用命令汇总# 1. 安装Javaaptinstallopenjdk-17-jdk-headless-y# 2. 下载jadxwgethttps://github.com/skylot/jadx/releases/download/v1.5.0/jadx-1.5.0.zip# 3. 解压jadxunzipjadx-1.5.0.zip# 4. 反编译APK./jadx-doutput app.apk# 5. 搜索Base64grep-r-E[A-Za-z0-9/]{6,}{0,2}output/# 6. Base64解码echoencoded_string|base64-d# 7. 查看文件内容catoutput/resources/AndroidManifest.xmlcatoutput/resources/res/values/strings.xmlcatoutput/resources/assets/config.jsoncatoutput/sources/com/moectf/apkreverse/MainActivity.java九、知识点回顾Android逆向工具jadx、apktoolBase64编码识别特征为大小写字母数字可能以结尾正则表达式[A-Za-z0-9/]{6,}{0,2}匹配Base64信息隐藏Flag可以分散存储在多个位置Leet Speak数字替换字母的常见变形最终答案moectf{Apk_REv3rse_1s_fuN_r1ghT?!!!}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉