本文适合
CTF Pwn 入门学习者。学完你能:在 NX 开启时找到参数 gadget,完成 puts(puts@got) 泄露、libc 基址计算和 system("/bin/sh") 或 ORW 二阶段利用
ROP 是 Return-Oriented Programming,返回导向编程。它的核心思想是:不直接注入新代码,而是把程序或 libc 中已有的小片段拼成想要的行为。
本文适合
CTF Pwn 入门学习者。学完你能:在 NX 开启时找到参数 gadget,完成 puts(puts@got) 泄露、libc 基址计算和 system("/bin/sh") 或 ORW 二阶段利用
ROP 是 Return-Oriented Programming,返回导向编程。它的核心思想是:不直接注入新代码,而是把程序或 libc 中已有的小片段拼成想要的行为。
本文适合
已经能让 ELF 程序崩溃,但不清楚 PLT/GOT/libc 泄露、ret2libc 和 RELRO 影响的 Pwn 入门学习者。学完你能:区分 PLT 调用入口、GOT 真实地址表和 libc 基址,并用一次函数地址泄露计算 system、/bin/sh 或改走 GOT 覆写路线
Pwn 里经常出现 ELF、PLT、GOT、libc。这些不是玄学名词,它们都和 Linux 程序如何加载、调用函数、定位地址有关。
本文适合
能读 C/反编译代码,但容易把长度检查、类型转换和内存操作割裂看的 Pwn 学习者。学完你能:识别有符号/无符号混用、加乘溢出和截断,把异常数值转化为越界读写、分配不足、负索引或权限绕过
整数溢出不是“数字变大了”这么简单。它发生在整数运算结果超出类型能表示的范围,导致结果回绕、截断或符号解释错误。Pwn 中它经常把一次看似安全的长度检查变成越界读写。
不同整数类型有不同范围。
本文适合
刚进入 Pwn,能运行 ELF 程序但还不清楚栈帧、返回地址、offset 和控制流劫持关系的学习者。学完你能:用崩溃输入验证返回地址是否可控,计算覆盖偏移,并把 ret2win、ret2libc 或 ROP 路线写成可复现利用链
Pwn 入门必须理解栈。很多基础漏洞的目标不是“写很多数据”,而是覆盖函数返回地址,让程序跳到攻击者想执行的位置。
栈用于保存函数调用过程中的局部变量、保存的寄存器和返回地址。