NepCTF2025 各个方向wp
字数 2620 2025-09-01 11:26:02

NepCTF2025 逆向工程与安全分析技术教学文档

1. 逆向工程基础技术

1.1 反调试技术分析与绕过

在"Reverse RealMe"题目中,我们遇到了典型的反调试技术:

  1. 反调试识别:通过观察发现main函数下方存在未被调用的RC4变体加密函数,这通常是反调试的常见手法
  2. 绕过方法
    • 使用x32dbg进行动态调试
    • 配合Scyllahide插件一键绕过反调试
    • 在疑似反调试代码处设置断点验证
  3. 实战技巧
    • 未被调用的函数可能是反调试陷阱
    • 动态调试是验证静态分析假设的有效手段
    • 插件化工具可以简化反调试绕过过程

1.2 加密算法逆向分析

RC4变体分析

  1. 识别特征
    • S盒初始化过程
    • 伪随机生成算法(PRGA)
  2. 提取关键数据
    • 通过调试器直接提取edx寄存器中的S盒
    • 对密文进行标准RC4解密流程

AES魔改分析

在"CrackMe"题目中展示了AES算法的深度逆向:

  1. 算法识别
    • 通过字符串定位核心函数
    • 观察密钥扩展和轮函数结构
  2. 魔改定位技术
    • 与标准AES代码逐轮对比
    • 重点关注MixColumns和SubBytes阶段
  3. 具体发现
    • MixColumns阶段额外异或0x55
    • S盒保持标准未修改
  4. 验证方法
    • 修改标准AES实现进行加密验证
    • 确保与目标程序加密结果一致

2. 动态链接库函数分析

2.1 标准库函数识别

  1. MD5识别
    • 来自libcrypto.dll
    • 无需逆向,直接调用标准实现
  2. AES识别
    • 同样来自libcrypto.dll
    • 但存在代码流混淆

2.2 混淆代码分析技术

  1. 代码流混淆特征
    • 代码块被分散到不同位置
    • 控制流非连续
  2. 分析方法
    • 通过关键常量定位(Sbox等)
    • 按算法标准流程重组代码块
    • 逐轮数据对比验证

3. 加密算法实现与魔改

3.1 TEA算法魔改分析

在"QRS"题目中遇到的魔改TEA:

  1. 识别特征
    • 32轮循环
    • Delta值参与运算
  2. 魔改点
    • 使用GetTickCount作为Delta
    • 实际调试发现Delta固定为0x68547369
  3. 解密方法
    • 提取密文和密钥
    • 实现逆向运算流程

3.2 自定义加密算法

"SpeedMino-Warlock"中的自定义加密:

  1. 框架识别
    • Love2D游戏框架
    • 使用lovely-injector进行代码注入
  2. 加密流程
    • 剪贴板内容获取
    • calcData加密函数
    • 假flag比对
  3. 真实校验定位
    • 通过CE搜索内存中的result_table
    • 发现隐藏的luajit函数

4. 游戏逆向技术

4.1 Love2D游戏逆向

  1. 文件结构分析
    • EXE可作为压缩包打开获取lua源码
    • 存在version.dll劫持注入
  2. 注入代码获取
    • 方法一:CE内存搜索关键数据结构
    • 方法二:修改lovely-injector的dump_all参数
  3. luajit逆向
    • 使用专用反编译工具
    • 重组真实校验逻辑

4.2 Unity游戏逆向

"MoewBle喵泡"中的技术:

  1. 关卡数据分析
    • 直接查找level2和level3数据
  2. GM指令分析
    • 逆向GmManager.cs
    • 经典KonamiKey:上上下下左右左右BA
  3. AssetRipper使用
    • 提取游戏资源
    • 分析C#脚本

5. 流量分析与取证

5.1 网络协议分析

"ICS 薯饼的 PLC"中的S7COMM协议:

  1. 协议识别
    • TCP端口11102和49810
    • S7COMM协议特征
  2. 数据提取
    • 筛选DB number 1002和1003
    • 提取连续地址请求的响应数据
  3. Wireshark配置
    • 修改TPKT TCP端口设置

5.2 Cobalt Strike流量分析

"客服小美"题目技术:

  1. 流量识别
    • CS特征流量
    • 确定IP和端口
  2. 内存取证
    • Volatility确定系统版本
    • 查找可疑进程
  3. 专用工具
    • cs-parse-traffic.py提取加密数据
    • cs-extract-key.py提取密钥

6. Web安全技术

6.1 反序列化漏洞

"JavaSeri"题目技术点:

  1. 漏洞识别
    • Cookies中base64解码发现序列化数据
    • 尝试修改user为admin
  2. 利用链发现
    • 部分黑名单内容识别
    • 利用list.clear()方法清空黑名单
  3. Payload构造
    • 绕过JSON格式限制
    • 分阶段利用

6.2 Electron客户端安全

"FakeXSS"题目技术:

  1. 客户端分析
    • 识别Electron框架
    • 解包获取main.js
  2. 敏感信息泄露
    • 发现腾讯云COS KEY
    • 确定Bucket和Region
  3. XSS利用
    • iframe标签滥用
    • 通过electronAPI.curl获取flag

6.3 SQL注入进阶

"我难道不是SQL注入天才吗"技术:

  1. ClickHouse特性
    • INTERSECT子句利用
    • FROM子句前置语法
  2. 绕过技术
    • 避免select.*from模式
    • 使用JOIN和ARRAY JOIN
  3. 盲注技术
    • LIKE子句利用
    • 条件判断构造

7. 加密算法实现细节

7.1 SM3签名算法分析

"Nepsign"题目技术:

  1. 单次签名漏洞
    • 允许对任意消息多次请求签名
  2. 攻击方法
    • 计算步长数组
    • 碰撞找出链中其他链元
  3. 签名伪造
    • 拼出对目标消息的有效签名

7.2 自定义加密流程

"SpeedMino"中的加密:

  1. 加密初始化
    • 55个空格RC4初始化
  2. 加密调用
    • calcData()调用2600次
    • 特定顺序要求

8. 实用工具与技巧

  1. 调试工具
    • x32dbg + Scyllahide插件
    • CE内存搜索
  2. 解包工具
    • WinAsar解包Electron应用
    • AssetRipper提取Unity资源
  3. 脚本工具
    • luajit_decompile反编译
    • cs系列Python脚本
  4. 协议分析
    • Wireshark TPKT配置
    • S7COMM协议解析

9. 综合技巧总结

  1. 静态分析
    • 字符串交叉引用
    • 算法特征识别
  2. 动态分析
    • 关键点断点设置
    • 寄存器数据提取
  3. 混合分析
    • 静态发现结合动态验证
    • 标准算法与目标程序对比
  4. 漏洞利用
    • 分阶段测试
    • 黑名单动态绕过

通过以上技术点的系统学习和实践,可以全面掌握现代CTF竞赛中的逆向工程与安全分析技术,从基础调试到复杂算法分析,从协议解析到漏洞利用,形成完整的技术体系。

NepCTF2025 逆向工程与安全分析技术教学文档 1. 逆向工程基础技术 1.1 反调试技术分析与绕过 在"Reverse RealMe"题目中,我们遇到了典型的反调试技术: 反调试识别 :通过观察发现main函数下方存在未被调用的RC4变体加密函数,这通常是反调试的常见手法 绕过方法 : 使用x32dbg进行动态调试 配合Scyllahide插件一键绕过反调试 在疑似反调试代码处设置断点验证 实战技巧 : 未被调用的函数可能是反调试陷阱 动态调试是验证静态分析假设的有效手段 插件化工具可以简化反调试绕过过程 1.2 加密算法逆向分析 RC4变体分析 识别特征 : S盒初始化过程 伪随机生成算法(PRGA) 提取关键数据 : 通过调试器直接提取edx寄存器中的S盒 对密文进行标准RC4解密流程 AES魔改分析 在"CrackMe"题目中展示了AES算法的深度逆向: 算法识别 : 通过字符串定位核心函数 观察密钥扩展和轮函数结构 魔改定位技术 : 与标准AES代码逐轮对比 重点关注MixColumns和SubBytes阶段 具体发现 : MixColumns阶段额外异或0x55 S盒保持标准未修改 验证方法 : 修改标准AES实现进行加密验证 确保与目标程序加密结果一致 2. 动态链接库函数分析 2.1 标准库函数识别 MD5识别 : 来自libcrypto.dll 无需逆向,直接调用标准实现 AES识别 : 同样来自libcrypto.dll 但存在代码流混淆 2.2 混淆代码分析技术 代码流混淆特征 : 代码块被分散到不同位置 控制流非连续 分析方法 : 通过关键常量定位(Sbox等) 按算法标准流程重组代码块 逐轮数据对比验证 3. 加密算法实现与魔改 3.1 TEA算法魔改分析 在"QRS"题目中遇到的魔改TEA: 识别特征 : 32轮循环 Delta值参与运算 魔改点 : 使用GetTickCount作为Delta 实际调试发现Delta固定为0x68547369 解密方法 : 提取密文和密钥 实现逆向运算流程 3.2 自定义加密算法 "SpeedMino-Warlock"中的自定义加密: 框架识别 : Love2D游戏框架 使用lovely-injector进行代码注入 加密流程 : 剪贴板内容获取 calcData加密函数 假flag比对 真实校验定位 : 通过CE搜索内存中的result_ table 发现隐藏的luajit函数 4. 游戏逆向技术 4.1 Love2D游戏逆向 文件结构分析 : EXE可作为压缩包打开获取lua源码 存在version.dll劫持注入 注入代码获取 : 方法一:CE内存搜索关键数据结构 方法二:修改lovely-injector的dump_ all参数 luajit逆向 : 使用专用反编译工具 重组真实校验逻辑 4.2 Unity游戏逆向 "MoewBle喵泡"中的技术: 关卡数据分析 : 直接查找level2和level3数据 GM指令分析 : 逆向GmManager.cs 经典KonamiKey:上上下下左右左右BA AssetRipper使用 : 提取游戏资源 分析C#脚本 5. 流量分析与取证 5.1 网络协议分析 "ICS 薯饼的 PLC"中的S7COMM协议: 协议识别 : TCP端口11102和49810 S7COMM协议特征 数据提取 : 筛选DB number 1002和1003 提取连续地址请求的响应数据 Wireshark配置 : 修改TPKT TCP端口设置 5.2 Cobalt Strike流量分析 "客服小美"题目技术: 流量识别 : CS特征流量 确定IP和端口 内存取证 : Volatility确定系统版本 查找可疑进程 专用工具 : cs-parse-traffic.py提取加密数据 cs-extract-key.py提取密钥 6. Web安全技术 6.1 反序列化漏洞 "JavaSeri"题目技术点: 漏洞识别 : Cookies中base64解码发现序列化数据 尝试修改user为admin 利用链发现 : 部分黑名单内容识别 利用list.clear()方法清空黑名单 Payload构造 : 绕过JSON格式限制 分阶段利用 6.2 Electron客户端安全 "FakeXSS"题目技术: 客户端分析 : 识别Electron框架 解包获取main.js 敏感信息泄露 : 发现腾讯云COS KEY 确定Bucket和Region XSS利用 : iframe标签滥用 通过electronAPI.curl获取flag 6.3 SQL注入进阶 "我难道不是SQL注入天才吗"技术: ClickHouse特性 : INTERSECT子句利用 FROM子句前置语法 绕过技术 : 避免select.* from模式 使用JOIN和ARRAY JOIN 盲注技术 : LIKE子句利用 条件判断构造 7. 加密算法实现细节 7.1 SM3签名算法分析 "Nepsign"题目技术: 单次签名漏洞 : 允许对任意消息多次请求签名 攻击方法 : 计算步长数组 碰撞找出链中其他链元 签名伪造 : 拼出对目标消息的有效签名 7.2 自定义加密流程 "SpeedMino"中的加密: 加密初始化 : 55个空格RC4初始化 加密调用 : calcData()调用2600次 特定顺序要求 8. 实用工具与技巧 调试工具 : x32dbg + Scyllahide插件 CE内存搜索 解包工具 : WinAsar解包Electron应用 AssetRipper提取Unity资源 脚本工具 : luajit_ decompile反编译 cs系列Python脚本 协议分析 : Wireshark TPKT配置 S7COMM协议解析 9. 综合技巧总结 静态分析 : 字符串交叉引用 算法特征识别 动态分析 : 关键点断点设置 寄存器数据提取 混合分析 : 静态发现结合动态验证 标准算法与目标程序对比 漏洞利用 : 分阶段测试 黑名单动态绕过 通过以上技术点的系统学习和实践,可以全面掌握现代CTF竞赛中的逆向工程与安全分析技术,从基础调试到复杂算法分析,从协议解析到漏洞利用,形成完整的技术体系。