ISCC 练武初赛re+mobile wp
字数 2110 2025-08-29 22:41:02
ISCC Mobile CTF 逆向工程实战教学文档
1. 邦布出击 (APK逆向分析)
1.1 题目分析
- 安装APK后,点击右下角按钮进入图鉴界面
- 需要百度各种邦布种类并逐个尝试
1.2 解题步骤
-
获取Base64加密文本:
- 通过尝试不同邦布种类,可获得三段Base64编码的文本
- 参考资源:绝区零WIKI_BWIKI
-
Base64解码:
- 将三段Base64拼接后,循环解码三次
- 得到明文(SQLCipher加密密钥)
-
数据库解密:
- 解压APK获取db文件
- 使用SQLCipher解密,密钥为之前获得的明文
- 注意:flag是假信息,关键在key和info中的"blowfish"提示
-
Blowfish解密:
- 使用JADX反编译APK
- 找到密文并通过Blowfish解密,得到DES加密的明文
-
DES加密验证:
- APK逻辑:DES加密结果需与输入内容(去掉flag格式)匹配
- 已知:明文、key和加密方式
- IV获取方法:
- 方法一:分析so文件中的IV生成逻辑(复杂)
- 方法二:使用Frida hook native函数getiv输出IV
2. Mobile Detective (Native函数分析)
2.1 题目分析
- 关键函数:stringFromJNI(native函数)
- 使用IDA分析so文件中的xorEncrypt函数
2.2 加密流程
- 字符串转十六进制
- 输入与key异或后转为字符串
- 每4字符提取前2字符
- 按特定规律打乱字符串位置
- 替换特定位置字符
3. HolyGrail (Checkbox顺序破解)
3.1 题目分析
- 多个checkbox,点击后在userSequence添加资源名称
- 需按特定顺序点击才能进入验证flag页面
3.2 解题步骤
-
获取正确顺序:
- 通过百度或AI获取checkbox点击顺序
- 使用Frida hook获取每个checkbox的参数
-
获取密文:
- 通过Frida hook传入特定顺序参数,输出返回密文
-
验证flag流程:
- 检查flag格式
- 调用validateFlag方法:
- getEncryptionKey
- vigenereEncrypt
- processWithNative(JNI函数)
- b.a
-
解密思路:
- 使用Frida hook processWithNative函数
- 发现字符加密结果与顺序无关
- 生成所有字符加密结果进行匹配
4. WhereIsFlag (Native函数逆向)
4.1 解题步骤
- 解压APK获取so文件(lib/arm64-v8a)
- 使用IDA64打开,查找Java_开头的native函数
- 加密函数逻辑:
- 输入倒序
- 根据字符表查找输入字符(需动态调试获取)
- 索引转换时有固定偏移(2)
- 从JADX获取目标密文(如iB3A7kSISR)
5. 小游戏 (XXTEA算法分析)
5.1 题目分析
- 包含exe和两个txt(非打印字符)
- txt内容实为函数二进制数据
5.2 解题步骤
- 动态调试,在关键点下断点
- 分析汇编代码,识别XXTEA算法
- 解密方法:
- 手动分析解密逻辑编写代码
- 或使用AI辅助
- 识别:
- 较短常量为key
- 较长常量为密文
6. 复杂加密 (手动分析技巧)
6.1 题目分析
- raw文件包含JFIF文件头(图片)
- 解密后得压缩包(含exe和enc文件)
6.2 解题方法
-
直接分析法:
- 忽略与输入无关的语句和函数
- 对修改输入的语句下断点
-
加密函数分析:
- switch逻辑对奇偶索引字符做不同变换
- 核心变量:v4(索引)和v5(控制case)
- 通过v4&1判断奇偶
-
逆向解密:
- 原逻辑:flag.txt → exe加密 → enc
- 现需从enc逆向flag
7. Faze (C++逆向技巧)
7.1 解题方法
-
断点法:
- 在sprintf下断点,查看目标字符串内容
- 或在operator==下断点,查看比较数据
-
直接查看:
- 目标字符串在用户输入前已初始化
- 跳转到rcx地址查看内容
8. Greeting (加密算法逆向)
8.1 加密逻辑
-
计算偏移:
- 整数除法i/5
- 等价于i%5
- 最终偏移为0、1、2、3、4循环
-
加密操作:
- 异或(i+0x5a)
- 循环左移计算出的偏移量
8.2 解密脚本编写
- 对每个字节:
- 先循环右移
- 再异或(i+0x5a)
- 密文位置:0x014001B390
通用工具与技巧
-
反编译工具:
- JADX:APK反编译
- IDA:so文件分析
- pyinstxtractor:PyInstaller打包程序解包
-
动态分析工具:
- Frida:hook native函数
- 动态调试器(IDA、GDB)
-
加密算法识别:
- 常见算法特征(XXTEA、Blowfish、DES等)
- 动态调试获取关键参数
-
逆向思维:
- 从加密流程逆向解密流程
- 关注数据流和控制流
- 善用交叉引用和字符串搜索
本教学文档涵盖了ISCC Mobile CTF中多个逆向工程题目的详细解题思路和方法,重点包括APK逆向、native函数分析、加密算法识别与逆向、动态调试技巧等内容,可作为移动安全逆向工程的学习参考。