1. 项目背景与目标解析
"Mary_Morton"是CTF竞赛平台"攻防世界"中一道经典的pwn引导题目,属于二进制漏洞利用入门题型。这道题主要考察选手对栈溢出漏洞的基础利用能力,特别是针对Canary保护机制的绕过技巧。作为pwn方向的入门题目,它完美呈现了从基础漏洞分析到最终获取shell的完整攻击链条。
我在实际解题过程中发现,这道题虽然标注为"引导模式",但其中涉及的技巧在实际CTF竞赛和渗透测试中都非常实用。通过系统分析这道题目,新手可以快速掌握以下核心技能:
- 识别程序中的栈溢出漏洞点
- 理解Canary保护机制的工作原理
- 使用格式化字符串漏洞泄露内存信息
- 组合利用多种漏洞实现攻击链
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与程序分析
2.1 题目环境配置
首先需要配置好基础的pwn分析环境,我推荐使用以下工具组合:
- Ubuntu 18.04/20.04 LTS系统
- pwntools (Python漏洞利用框架)
- gdb-peda (增强版调试器)
- checksec (安全机制检测工具)
- ROPgadget (ROP链构造工具)
安装命令示例:
bash复制sudo apt update
sudo apt install -y python3 python3-pip git gdb
pip3 install pwntools
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
2.2 程序安全机制检测
使用checksec工具检查程序防护机制:
bash复制checksec --file=Mary_Morton
典型输出结果会显示:
- Stack Canary: Enabled
- NX: Enabled
- PIE: Disabled
这表明程序启用了栈保护金丝雀(Canary)和NX(数据不可执行)保护,但没有地址随机化(PIE)。这对我们的漏洞利用策略有重要影响。
2.3 程序逆向分析
使用IDA Pro或Ghidra对程序进行静态分析,可以发现关键函数逻辑:
c复制void game() {
char
