文章总结: 本文是CTFPwn模块入门教程,聚焦2025年新手必学的三大核心技能:栈溢出漏洞、堆溢出基础和沙箱逃逸入门。通过真题案例详细解析了每种漏洞的原理、工具使用方法、解题关键和常见坑点,帮助新手掌握Pwn模块60%基础题的解题技巧。文章结构清晰,实操性强,适合CTF初学者快速入门Pwn模块。 综合评分: 91 文章分类: CTF,二进制安全,漏洞分析,安全培训
CTF Pwn模块拆解(第10期·基础篇):2025新手必学,3大核心技能搞定60%基础题
原创
点击关注👉
网络安全学习室
2025年12月20日 11:06 湖南
Reverse 模块全系列完结后,很多选手反馈 “Pwn 模块看着就怕,不知道从哪下手,总觉得是大佬才会的内容”——2025 CTF 赛事数据显示,Pwn 模块占比稳定在 18%-22%,且基础题占比达 60%,核心考察 “漏洞原理 + 工具实操 + exp 编写”,而非高深的内核知识。
本期开启 Pwn 模块基础篇,聚焦 “新手能快速落地” 的三大核心技能:栈溢出漏洞、堆溢出基础、沙箱逃逸入门,全程用 2025 真题案例(如攻防世界、CTFshow)拆解,避免复杂术语,文末福利包含工具安装包 + 真题 exp 脚本,帮你轻松入门 Pwn!
一、栈溢出漏洞:Pwn 模块的 “入门敲门砖”
1. 核心逻辑(一句话懂) 
程序在处理输入时,未限制输入长度,导致输入数据超出栈上变量的存储空间,覆盖栈上的返回地址(EIP/RIP),控制程序执行流程,是 Pwn 模块最基础、最常见的漏洞。
2. 2025 高频工具与真题实操 
(1)栈溢出基础(32 位程序,无保护) 
-
2025 真题场景:Linux 32 位程序
pwn_stack,运行后要求输入字符串,输入过长会崩溃; -
实操步骤:
-
用
checksec工具查看程序保护:checksec pwn_stack,显示NX disabled(数据可执行)、Canary found: No(无栈金丝雀)、PIE disabled(地址随机化关闭); -
用 IDA 打开程序,分析
main函数伪代码,发现read(0, buf, 0x100),但buf仅分配了 0x20 字节空间,存在栈溢出;
-
编写 exp 脚本(Python+pwntools):
-
运行脚本:执行
python3 exp.py,成功获取 shell,输入cat flag得到 flag; -
漏洞分析:
- 新手技巧:
pwntools是 Pwn 必备工具,自动处理字节序、地址转换,大幅简化 exp 编写。
(2)栈溢出进阶(64 位程序,无保护) 
-
核心区别:64 位程序的参数通过寄存器传递(rdi、rsi、rdx),而非栈;
-
exp 调整:构造 payload 时,需先将
/bin/sh地址放入 rdi 寄存器,再调用 system 函数;
3. 2025 解题关键 
- 必学工具:
checksec(查看程序保护)、pwntools(编写 exp)、gdb(动态调试); - 核心概念:栈布局(buf、ebp、eip 的位置)、返回地址覆盖、gadget(用于传递参数的代码片段);
- 地址获取:无 PIE 时,用 IDA 查找函数 / 字符串地址;有 PIE 时,需泄露基地址后计算偏移。
4. 避坑清单(2025 新手踩坑率 85%) 
- 字节序:32 位程序用
p32()转换地址,64 位用p64(),混用会导致地址错误; - 填充长度:填充长度需准确(buf 大小 + ebp 大小),过长或过短都会导致覆盖失败;
- 程序保护:若开启
NX(数据不可执行),需用 ROP 链(gadget 组合),不能直接执行栈上代码。
二、堆溢出基础:Pwn 模块的 “进阶跳板”
1. 核心逻辑(一句话懂) 
程序在处理堆内存时,未限制输入长度,导致输入数据超出堆块的存储空间,覆盖相邻堆块的元数据(如 size、fd/bk 指针),控制堆内存分配 / 释放流程,是 Pwn 模块中等难度题的核心。
2. 2025 高频堆漏洞类型与实操 
(1)fastbin double free(最常见,占堆基础题 50%) 
- 2025 真题场景:Linux 程序
pwn_heap,存在malloc、free、read函数,未检查堆块是否已释放,可重复释放同一堆块; - 漏洞原理:fastbin 是堆内存的快速分配链表,重复释放同一堆块会导致链表中出现重复指针,可伪造堆块控制程序流程;
- 实操步骤:
-
漏洞分析:用 IDA 分析程序,发现
free(ptr)后未将ptr置空,可再次free(ptr); -
编写 exp 脚本(pwntools):
- 新手技巧:用
gdb+heapinfo插件查看堆布局,确认堆块地址和元数据。
3. 2025 解题关键 
- 堆结构:fastbin、smallbin、largebin 的区别,堆块元数据(size、fd、bk)的作用;
- 核心漏洞:double free、use after free、off by one(堆块溢出 1 字节);
- 工具辅助:
gdb-heap(查看堆布局)、pwntools(编写堆溢出 exp)。
4. 避坑清单(2025 新手踩坑率 90%) 
- 堆块大小:fastbin 堆块大小需在 0x10-0x80 之间,超出会进入 smallbin;
- 指针置空:free 堆块后需将指针置空,否则可能导致 use after free;
- 堆保护:若开启
tcache(堆缓存),需先填充 tcache 链表,再利用 double free。
三、沙箱逃逸入门:Pwn 模块的 “加分项”
1. 核心逻辑(一句话懂) 
程序运行在沙箱中(如 seccomp),限制了系统调用(如execve、open),沙箱逃逸就是绕过这些限制,执行系统调用获取 flag,是 Pwn 模块基础题的常见附加考点。
2. 2025 高频沙箱类型与逃逸实操 
(1)seccomp 沙箱逃逸(最常见) 
-
2025 真题场景:程序
pwn_sandbox开启 seccomp,仅允许read、write、exit系统调用,无法直接执行execve获取 shell; -
逃逸思路:用
orw(open-read-write)系统调用组合,直接读取 flag 文件并输出; -
exp 脚本片段:
-
工具辅助:用
seccomp-tools查看沙箱规则:seccomp-tools dump ./pwn_sandbox。
3. 2025 解题关键 
- 核心系统调用:
open(打开文件)、read(读取文件)、write(输出内容)、execve(执行程序); - 沙箱识别:用
seccomp-tools查看系统调用限制; - 逃逸思路:若无法执行
execve,用orw直接读取 flag;若无法open,用泄露的地址读取内存中的 flag。
4. 避坑清单(2025 新手踩坑率 75%) 
- 系统调用号:不同架构的系统调用号不同(x86 中
open是 5,x64 中是 2),需确认架构; - 参数传递:系统调用的参数通过寄存器传递(x64 中 rdi、rsi、rdx),需用 gadget 设置寄存器值;
- 沙箱规则:部分沙箱会限制文件路径(如仅允许读取
/home/user/flag),需确认 flag 路径。
下期预告:Pwn 模块进阶篇
本期拆解的栈溢出、堆溢出基础、沙箱逃逸入门,能搞定 2025 Pwn 模块 60% 的基础题!下期将聚焦 “进阶难点”:ROP 链进阶、堆漏洞进阶(tcache poisoning)、内核漏洞基础,搭配中等难度真题,帮你稳步上分!
福利:2025 网络安全基础福利包免费领!
为了让你快速落地本期技巧,适配 2025 最新赛事,我整理了「网络安全基础专项福利包」
领取方式:扫描下方二维码,即可获取「200 节网络攻防视频教程 + Web 专项资料包」,还能加入 CTF 技术交流群,获取本期漏洞的工具包(蚁剑、SQLmap)和真题 Writeup,有问题随时答疑!
互动:你在 Pwn 入门中最卡哪个环节?
本期 3 类基础技能你掌握了吗?是否遇到过 “栈溢出覆盖失败”“堆布局看不懂”“沙箱逃逸失败” 等问题?欢迎在评论区留言,点赞前 3 名可免费获取「Pwn 进阶工具包」,含 ROP 链生成脚本、堆漏洞分析模板!
查看原文:《CTF Pwn模块拆解(第10期·基础篇):2025新手必学,3大核心技能搞定60%基础题》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论