1. 项目背景与目标解析
"Mary_Morton"是CTF竞赛平台"攻防世界"中一道经典的pwn引导题目,主要考察二进制漏洞利用的基础能力。这道题目的设计初衷是帮助初学者掌握栈溢出漏洞的基本原理和利用方法,属于pwn入门阶段的必刷题型。
作为一道引导模式的题目,它的难度定位在"简单"级别,适合已经掌握基本Linux命令、C语言基础和GDB调试技能的选手。题目通常会提供一个可执行文件(ELF格式)和对应的libc库文件,选手需要通过逆向分析找到漏洞点,并构造payload实现提权或获取flag。
提示:在开始解题前,建议先掌握objdump、readelf、checksec等基础工具的使用,了解函数调用栈的结构和基本的汇编指令。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与文件分析
2.1 题目文件获取与检查
首先我们需要下载题目提供的附件,通常包含以下文件:
- mary_morton:可执行程序
- libc.so.6:动态链接库(可能版本不同)
- 其他辅助文件(如有)
使用checksec工具检查程序的安全机制:
bash复制checksec --file=mary_morton
典型输出结果可能显示:
code复制Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
这个结果告诉我们几个关键信息:
- 程序是64位架构
- 启用了栈保护(Canary)
- 启用了NX(数据不可执行)
- 没有开启PIE(地址随机化)
2.2 程序功能初步分析
运行程序观察基本行为:
bash复制./mary_morton
程序可能会显示一个菜单,提供多个选项,比如:
code复制1. 输入名字
2. 显示信息
3. 退出
通过简单的交互测试,我们可以发现:
- 选项1可能存在缓冲区溢出漏洞
- 选项2可能泄露某些关键信息
- 程序可能有格式化字符串漏洞
3. 漏洞分析与利用
3.1 逆向工程与漏洞定位
使用IDA Pro或Ghidra对程序进行反编译,重点关注以下几个函数:
- main函数:程序主逻
