TGCTF2025逆向方向部分wp
字数 1729 2025-08-30 06:50:35

TGCTF2025逆向方向部分题目解析与教学文档

Base64题目解析

题目描述:如题,flag格式为HZNUCTF{}

解题过程

  1. 题目直接给出了flag内容:HZNUCTF{ad162c-2d94-434d-9222-b65dc76a3}
  2. 最后一位"2"是通过手动爆破得到的
  3. 完整flag:HZNUCTF{ad162c-2d94-434d-9222-b65dc76a32}

教学要点

  • 简单的Base64题目可能直接包含flag信息
  • 有时需要手动尝试最后几位字符
  • flag格式提示(HZNUCTF{})是重要解题线索

蛇年的本命语言

题目描述:如题...flag的格式为HZNUCTF{}

解题步骤

  1. 使用工具组合:pyinstxtractor + uncompyle6获取源码
  2. 分析源码发现使用z3求解器
  3. 观察到字符+字频格式排列,共36个字符
  4. 字符串"111111116257645365477364777645752361"是input每一位统计字频得到的
  5. 字频作为索引填充字符:
    • 所有6对应a
    • 所有2对应d
  6. 最终flag:HZNUCTF{ad7fa-76a7-ff6a-fffa-7f7d6a}

关键技术

  • Python打包文件逆向工具链使用
  • z3求解器识别与应用
  • 字频统计分析技巧

水果忍者

题目描述:Just for fun...(貌似有些bug?但好像不影响...) flag格式为HZNUCTF{}

解题方法

  1. 定位Unity游戏文件:Fruit Ninja_Data\Managed\Assembly-CSharp.dll
  2. 使用dnSpy反编译
  3. 查找GameManager类,在底部发现加密数据
  4. 分析发现:
    • 存在IV(初始化向量)
    • key是16位字符串
  5. 推测使用AES-CBC加密模式

教学要点

  • Unity游戏逆向分析流程
  • dnSpy工具使用技巧
  • 加密模式识别方法(AES-CBC特征)

XTEA加密题目

题目描述:如题,貌似有点misc味? flag格式为HZNUCTF{}

解题分析

  1. 题目使用魔改的XTEA算法
  2. delta值是附件压缩包密码
  3. rand函数是伪随机,key固定不变
  4. 可通过调试获取key值

关键技术点

  • XTEA算法识别与逆向
  • 伪随机数生成分析
  • 调试获取加密密钥技巧

randomsystem题目

题目描述:名字乱取的...flag格式为HZNUCTF{}

详细解题过程

  1. 初始分析

    • 使用IDA打开二进制文件
    • 检查exports,发现tls回调函数
    • 去除花指令(将无用代码段nop掉)
  2. 关键数据定位

    • seed和dword_41C368在主函数中使用
    • 主函数包含4个被添加相同类型花指令的函数
  3. flag处理流程

    • 打乱flag:前32位与后32位交换
    • 赋值操作:a2 = a3
    • 字符串处理:16个十进制数字字符按每两个一组进行十六进制解码,结果写入a2
    • 矩阵乘法:flag与可逆矩阵相乘
    • 异或加密:矩阵结果经过一次异或
    • 最终得到已知列表
  4. 注意事项

    • rand函数尽量通过调试获取正确值
    • 在VS2022中可能得到错误结果,需验证

逆向技巧总结

  • TLS回调函数识别与分析
  • 花指令去除方法
  • 矩阵运算逆向技术
  • 伪随机数调试技巧

通用逆向方法论

  1. 文件分析

    • 识别文件类型(PE、ELF、Unity、Python打包等)
    • 选择合适工具链(IDA、dnSpy、pyinstxtractor等)
  2. 加密算法识别

    • 常见算法特征(AES、XTEA等)
    • 密钥与IV定位方法
  3. 反调试对抗

    • 花指令处理
    • 反调试技术绕过
  4. 数据处理流程

    • 跟踪数据流
    • 重建处理逻辑
  5. 验证方法

    • 调试获取关键值
    • 编写逆向脚本验证

工具链推荐

  1. 静态分析

    • IDA Pro
    • Ghidra
    • Binary Ninja
  2. 动态分析

    • x64dbg
    • WinDbg
    • GDB
  3. 专用工具

    • dnSpy(.NET反编译)
    • pyinstxtractor(Python打包解包)
    • uncompyle6(Python字节码反编译)
  4. 辅助工具

    • CyberChef(数据转换)
    • Z3(约束求解)
    • Python(快速验证)
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(快速验证)