CTFPwn模块拆解(第10期·基础篇):2025新手必学,3大核心技能搞定60%基础题

admin 2025-12-22 03:52:16 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是CTFPwn模块入门教程,聚焦2025年新手必学的三大核心技能:栈溢出漏洞、堆溢出基础和沙箱逃逸入门。通过真题案例详细解析了每种漏洞的原理、工具使用方法、解题关键和常见坑点,帮助新手掌握Pwn模块60%基础题的解题技巧。文章结构清晰,实操性强,适合CTF初学者快速入门Pwn模块。 综合评分: 91 文章分类: CTF,二进制安全,漏洞分析,安全培训


cover_image

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 字节空间,存在栈溢出;

  1. 编写 exp 脚本(Python+pwntools):

  2. 运行脚本:执行python3 exp.py,成功获取 shell,输入cat flag得到 flag;

  3. 漏洞分析:

  • 新手技巧: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,存在mallocfreeread函数,未检查堆块是否已释放,可重复释放同一堆块;
  • 漏洞原理:fastbin 是堆内存的快速分配链表,重复释放同一堆块会导致链表中出现重复指针,可伪造堆块控制程序流程;
  • 实操步骤:
  1. 漏洞分析:用 IDA 分析程序,发现free(ptr)后未将ptr置空,可再次free(ptr)

  2. 编写 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),限制了系统调用(如execveopen),沙箱逃逸就是绕过这些限制,执行系统调用获取 flag,是 Pwn 模块基础题的常见附加考点。

2. 2025 高频沙箱类型与逃逸实操

(1)seccomp 沙箱逃逸(最常见)

  • 2025 真题场景:程序pwn_sandbox开启 seccomp,仅允许readwriteexit系统调用,无法直接执行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%基础题》

评论:0   参与:  3