ACECTF1.0部分题解
字数 1034 2025-08-29 08:30:24
ACECTF1.0部分题解教学文档
Binary Exploitation部分
1. Underflow题目解析
题目性质: 签到题,难度极低
解题要点:
- 这是一个基础的缓冲区溢出题目
- 考察最基本的栈溢出利用技术
- 适合完全新手的入门练习
2. jumPIEng题目解析
保护机制: 开启了PIE保护
漏洞利用:
- 程序打印出了main函数的地址
- 允许用户输入一个地址并跳转到该地址
- 通过IDA分析发现存在后门函数
解题步骤:
- 接收程序输出的main函数地址
- 计算main函数与后门函数之间的偏移量
- 根据偏移量计算出后门函数的准确地址
- 输入计算出的地址实现跳转
关键点:
- 虽然开启了PIE,但由于泄露了地址信息,保护实际上被绕过
- 需要准确计算函数间的偏移量
3. Running Out of Time题目解析
题目描述: 逆向工程题目
程序逻辑:
- 首先生成一个随机数
- 需要输入正确的随机数才能进入关键函数p3xr9q_t1zz
- p3xr9q_t1zz函数实现简单的XOR操作
解题方法:
- 直接绕过随机数验证部分
- 分析发现可以直接调用p3xr9q_t1zz函数而不需要验证随机数
关键点:
- 逆向工程中识别不必要的验证步骤
- 直接关注核心加密/解密逻辑
Reverse Engineering部分
Significance of Reversing题目解析
题目特征:
- 提供了一个图片文件
- 文件名提示使用010 Editor等工具检查
发现问题:
- 文件的16进制数据被反向排序
解题步骤:
- 编写脚本将16进制数据反向排序
- 恢复原始数据格式
加密变换规则:
*a1 = (*a1 + 14) % 94 + 33
规则解析:
- 可打印ASCII范围是33(到126(~),共94个字符
(*a1 + 14)将字符向前移位14个位置% 94确保结果在94个字符范围内循环+ 33将结果映射回33到126的范围
加密性质:
- 这是ROT47加密的变种
- 标准ROT47循环移位47位,而这里是移位14位
- 属于简单的替换密码
解题关键:
- 识别文件格式异常
- 理解加密算法
- 实现逆向变换脚本
总结
Binary Exploitation要点
- 地址泄露结合偏移计算
- 保护机制的绕过技巧
- 不必要的验证步骤识别
Reverse Engineering要点
- 文件格式分析
- 加密算法识别
- 逆向变换实现
通用技巧
- 仔细分析程序输出
- 使用IDA等工具进行静态分析
- 关注核心逻辑而非外围验证
- 理解加密算法的数学原理