TGCTF2025逆向方向部分wp
字数 1729 2025-08-30 06:50:35
TGCTF2025逆向方向部分题目解析与教学文档
Base64题目解析
题目描述:如题,flag格式为HZNUCTF{}
解题过程:
- 题目直接给出了flag内容:
HZNUCTF{ad162c-2d94-434d-9222-b65dc76a3} - 最后一位"2"是通过手动爆破得到的
- 完整flag:
HZNUCTF{ad162c-2d94-434d-9222-b65dc76a32}
教学要点:
- 简单的Base64题目可能直接包含flag信息
- 有时需要手动尝试最后几位字符
- flag格式提示(HZNUCTF{})是重要解题线索
蛇年的本命语言
题目描述:如题...flag的格式为HZNUCTF{}
解题步骤:
- 使用工具组合:pyinstxtractor + uncompyle6获取源码
- 分析源码发现使用z3求解器
- 观察到字符+字频格式排列,共36个字符
- 字符串"111111116257645365477364777645752361"是input每一位统计字频得到的
- 字频作为索引填充字符:
- 所有6对应a
- 所有2对应d
- 最终flag:
HZNUCTF{ad7fa-76a7-ff6a-fffa-7f7d6a}
关键技术:
- Python打包文件逆向工具链使用
- z3求解器识别与应用
- 字频统计分析技巧
水果忍者
题目描述:Just for fun...(貌似有些bug?但好像不影响...) flag格式为HZNUCTF{}
解题方法:
- 定位Unity游戏文件:
Fruit Ninja_Data\Managed\Assembly-CSharp.dll - 使用dnSpy反编译
- 查找GameManager类,在底部发现加密数据
- 分析发现:
- 存在IV(初始化向量)
- key是16位字符串
- 推测使用AES-CBC加密模式
教学要点:
- Unity游戏逆向分析流程
- dnSpy工具使用技巧
- 加密模式识别方法(AES-CBC特征)
XTEA加密题目
题目描述:如题,貌似有点misc味? flag格式为HZNUCTF{}
解题分析:
- 题目使用魔改的XTEA算法
- delta值是附件压缩包密码
- rand函数是伪随机,key固定不变
- 可通过调试获取key值
关键技术点:
- XTEA算法识别与逆向
- 伪随机数生成分析
- 调试获取加密密钥技巧
randomsystem题目
题目描述:名字乱取的...flag格式为HZNUCTF{}
详细解题过程:
-
初始分析:
- 使用IDA打开二进制文件
- 检查exports,发现tls回调函数
- 去除花指令(将无用代码段nop掉)
-
关键数据定位:
- seed和dword_41C368在主函数中使用
- 主函数包含4个被添加相同类型花指令的函数
-
flag处理流程:
- 打乱flag:前32位与后32位交换
- 赋值操作:a2 = a3
- 字符串处理:16个十进制数字字符按每两个一组进行十六进制解码,结果写入a2
- 矩阵乘法:flag与可逆矩阵相乘
- 异或加密:矩阵结果经过一次异或
- 最终得到已知列表
-
注意事项:
- rand函数尽量通过调试获取正确值
- 在VS2022中可能得到错误结果,需验证
逆向技巧总结:
- TLS回调函数识别与分析
- 花指令去除方法
- 矩阵运算逆向技术
- 伪随机数调试技巧
通用逆向方法论
-
文件分析:
- 识别文件类型(PE、ELF、Unity、Python打包等)
- 选择合适工具链(IDA、dnSpy、pyinstxtractor等)
-
加密算法识别:
- 常见算法特征(AES、XTEA等)
- 密钥与IV定位方法
-
反调试对抗:
- 花指令处理
- 反调试技术绕过
-
数据处理流程:
- 跟踪数据流
- 重建处理逻辑
-
验证方法:
- 调试获取关键值
- 编写逆向脚本验证
工具链推荐
-
静态分析:
- IDA Pro
- Ghidra
- Binary Ninja
-
动态分析:
- x64dbg
- WinDbg
- GDB
-
专用工具:
- dnSpy(.NET反编译)
- pyinstxtractor(Python打包解包)
- uncompyle6(Python字节码反编译)
-
辅助工具:
- CyberChef(数据转换)
- Z3(约束求解)
- Python(快速验证)