“轩辕杯”云盾砺剑CTF挑战赛
字数 1604 2025-08-29 22:41:10
"轩辕杯"云盾砺剑CTF挑战赛解题技术文档
写在前面
本文档详细分析"轩辕杯"云盾砺剑CTF挑战赛中出现的多个题目,涵盖逆向工程、加密算法分析和漏洞利用等技术要点。
ezBase题目分析
题目特征
- 使用UPX魔改壳进行加壳
- 核心加密逻辑包含base64变种
解题步骤
-
查壳与脱壳:
- 使用查壳工具识别UPX魔改壳
- 进行脱壳处理
-
主函数分析:
- 定位到关键比较函数sub_140001130
- 识别特征值0x3F,判断为base64变种
-
加密逻辑:
- base64编码表被替换,新表存储在aAabbccddeeffgg中
- 编码后进行了异或操作
-
解密脚本:
# 伪代码示例
custom_table = "从aAabbccddeeffgg中提取的表"
encoded_data = "密文"
xor_key = 0xXX # 需要分析确定的异或值
# 实现自定义base64解码和异或操作
最终flag:flag{Y0u_@R3_Upx_4nd_b45364_m4st3r!}
你知道base吗题目分析
加密结构
题目分为两部分加密:
- 第一部分:TEA加密
- 第二部分:RC4加密(使用TEA解密得到的key)
第一部分:TEA加密分析
- 标准TEA加密算法实现
- 解密得到key作为第二部分RC4的密钥
第二部分:RC4魔改分析
- 识别RC4加密函数
- 发现魔改点:
- 最后进行的是加法操作而非标准异或
- 逆向得到比较table
最终加密层:base32
- 对之前得到的table截取1-32位作为base32码表
- 使用赛博厨子工具解密base32
最终flag:flag{y0u__rea11y__k1ow__Base!}
无由持一碗,寄与爱茶人题目分析
加密结构
- 两段TEA加密:
- 第一段:无魔改TEA
- 第二段:标准XTEA
解题要点
- 题目未在正式赛事中出现
- 提供密钥和密文
- 直接实现XTEA解密算法
最终flag:flag{XTe@_1s_s0_sO_g00d_D3ink_s0mE_TEA?}
封印题目分析
题目特征
- Python打包的应用程序
- 使用RC4加密
解题步骤
- 使用pyinstxtractor解包
- 分析解包后的Python代码
- 解密流程:
- 先解URL编码
- 提取hex数组
- 实现RC4解密
最终flag:flag{REAL_EZ_RC4}
HockMe题目分析
题目特征
- 考察hook技术
- 使用JADX进行初步分析
- 核心是RC4加密
解题步骤
-
静态分析:
- 使用JADX找到native层函数调用
- 识别correctCiphertext比较点
-
动态分析:
- 编写hook脚本获取加密后的十六进制串
- 方法1:构造特定输入hook密钥流
- 方法2:IDA调试so文件
-
IDA调试技巧:
- 定位Java_com_example_hookme_MainActivity_rc4Encrypt函数
- 关键点:
- 输入长度限制处理
- PRGA函数内while循环修改
- 寄存器(RAX/AL)数据提取
-
数据拼接:
- 分多次获取加密数据
- 组合完整flag
Matlab_SMC题目分析
题目特征
- 需要创建flag.xlsx文件
- 数据加密特征分析
解题步骤
-
环境准备:
- 创建flag.xlsx,复制enc文件
- 构造测试数据(1-10,含小数,重复值)
-
加密分析:
- 对比输入输出数据
- 发现特征:
- 第一列和第二列加密算法相同
- 相同输入→相同输出(无顺序依赖)
- 独立数据处理
-
算法推导:
- 输入输出丢给GPT分析
- 确定加密函数:y = 5x² + 2x + 1
-
最终处理:
- 计算题目指定案例的平均值
- 保留三位小数
- MD5加密结果
最终flag:flag{7ce3c18d1e03070c79cf5074a195a240}
总结
本CTF赛事涵盖了多种安全技术:
- 逆向工程(UPX脱壳、native层分析)
- 加密算法(TEA/XTEA、RC4、base32/64变种)
- 动态分析(hook技术、调试技巧)
- 数据分析与算法推导
- 文件格式处理(Python打包、Excel)
每个题目都考察了不同的技术栈,需要综合运用多种技能进行解题。