NepCTF2025 各个方向wp
字数 2620 2025-09-01 11:26:02
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竞赛中的逆向工程与安全分析技术,从基础调试到复杂算法分析,从协议解析到漏洞利用,形成完整的技术体系。