本文适合
已经理解 ROP基础 和 shellcode与syscall,但在 gadget 稀缺、需要一次性控制多个寄存器时卡住的 Pwn 学习者。学完你能:判断 SROP 是否适用,构造 SigreturnFrame 控制寄存器,并用 rt_sigreturn 组织 execve、mprotect 或 ORW 利用链
本文适合
已经理解 ROP基础 和 shellcode与syscall,但在 gadget 稀缺、需要一次性控制多个寄存器时卡住的 Pwn 学习者。学完你能:判断 SROP 是否适用,构造 SigreturnFrame 控制寄存器,并用 rt_sigreturn 组织 execve、mprotect 或 ORW 利用链
本文适合
已经理解 栈、返回地址与控制流 和 ROP基础,准备直接写机器码或系统调用链的 Pwn 学习者。学完你能:按目标架构写出最小 execve 或 ORW shellcode,判断 NX/seccomp/bad char 对路线的影响,并用 syscall 编号和调用约定验证 payload
本文适合
已经能控制 RIP 或构造 ROP,但 system("/bin/sh")、execve 或 shellcode 在远程被 kill 的 Pwn 学习者。学完你能:用 seccomp-tools 读懂 syscall 过滤规则,并把利用目标从起 shell 改成 ORW、openat、mprotect 或允许的 syscall 链
seccomp 是 Linux 的系统调用过滤机制。Pwn 题里它常用来限制程序能调用哪些 syscall,从而让常规 execve("/bin/sh") 失效。
本文适合
已经理解 ROP基础,但在小二进制里找不到完整 pop rdi/rsi/rdx gadget 的 Pwn 学习者。学完你能:识别 __libc_csu_init 两段 gadget,按 rbx/rbp/r12-r15 约束构造一次三参数函数调用,并处理 call 后的栈副作用
本文适合
已经理解 栈、返回地址与控制流,但遇到 Stack smashing detected、Canary 泄露或 fork 爆破卡点的 Pwn 学习者。学完你能:判断 Canary 是否阻断返回地址覆盖,选择泄露、爆破或绕开 Canary 的路线,并在 payload 中原样恢复 Canary 后继续劫持控制流
本文适合
已经理解 栈、返回地址与控制流 和 ROP基础,但原始溢出空间太短、放不下完整 ROP 链的 Pwn 学习者。学完你能:判断何时需要 stack pivot,选择 .bss、堆或泄露栈地址作为新栈,并用 leave; ret 或 pivot gadget 执行第二阶段 ROP
本文适合
已经理解基本 Pwn 原语,开始遇到多线程、fork、signal、TOCTOU 或内核 double fetch 题的学习者。学完你能:识别检查和使用之间的竞态窗口,用并发、调度、文件切换或 userfaultfd/FUSE 放大窗口,并记录一次可复现的竞态成功证据
竞态条件(Race Condition)在二进制利用中是指多个执行流(线程、进程、信号处理)之间的竞争导致程序行为偏离预期。条件竞争是系统安全中的经典问题,从用户态程序到内核漏洞都有涉及。