其他类型PWN¶
PWN · 知识域。IO_FILE/FSOP、侧信道、Shellcode 工程、Blind、提权、解释器等专题。标签:IO_FILE利用、侧信道攻击、Shellcode编写、Blind-PWN、提权利用、解释器PWN。
触发特征¶
- glibc 2.34+(无
__free_hook)堆题、orw/seccomp 题、无回显服务、"自定义语言/解释器"题。
IO_FILE利用(FSOP)¶
- 背景:
_IO_2_1_stdout_等结构体 + vtable 调用链。 - stdout 劫持:伪造 FILE 结构借
_IO_wfile_overflow/_IO_str_jumps→ 泄露或直接 setcontext(全版本通用的 2.34+ 主路径)。 - 2.24+ vtable 校验绕过:合法 jumps 段内转移(HITCON 2017);fastbin stdout 两段劫持破 Full RELRO(ASIS CTF 2017);stdin
_IO_buf_basenull 字节改写(Tokyo Westerns 2017)。 - setcontext 系:
setcontext+61(rdi 指向可控块)寄存器全家桶加载;SUID 变体(Midnight Flag 2026)。 - exit handlers:2.34+ 走
__run_exit_handlers/TLS destructor(__call_tls_dtors)/atexit PTR_MANGLE 逆转(0x00CTF 2017 任意读配合)。 - leakless libc:多 fgets stdout FILE 覆写(Midnightflag 2026);TLS 段泄露后 destructor 接力。
- FSOP + seccomp:openat/mmap/write orw 链(EHAX 2026)。
侧信道攻击¶
- 时间:逐字符恢复(RC3 CTF 2016)、连接超时位(hxp 2018)、比较轮数。
- 计数:Intel Pin 指令计数侧信道(Hackover CTF 2015);信号触发次数 strace 统计(PlaidCTF 2017)。
- 内存:设计好的页错误/timing;fork 服务 canary 逐字节爆。
- 盲 SQLi 经脚本引擎超时(35C3 2018,跨域参考)。
Shellcode编写¶
- 工程化:
shellcraft.sh()/cat_flag();pwntoolsasm()。 - 约束对抗:坏字符(编码/寄存器变换)、长度(分阶段、syscall 复用)、字符集(字母数字/x86 解码器)、架构(x86/ARM/Thumb/RISC-V,→ 异构PWN)。
- orw 通用模板:open("flag") → read → write;openat2 绕新 seccomp(→ 栈页 RETF/x32)。
- 游戏化变体:Game of Life 静物演化 shellcode(DEF CON Quals 2016)、IEEE 754 双精度当 shellcode(Kaspersky 2018)、Game Genie 6 字符补丁码(BSIDSSF 2019)。
Blind-PWN¶
- 无二进制只给服务:全靠"注入-观察"。
- 栈迁移盲打、GOT 覆盖试探;格式串盲写:逐字节
%n写 shellcode 加载器,无回显时以"进程是否退出/是否回显后续输入"为 oracle。 - 泄露栈内容:fmt
%p序列 + 语义解析(找 libc 指纹、环境变量)。 - dump 二进制:盲 fmt 读 GOT→ 逐地址
%s还原 ELF 常见段。
提权利用¶
- SUID 程序漏洞 → root;
modprobe_path/core_pattern覆写(内核侧)。 - 环境继承:FD 未加
O_CLOEXEC泄漏高权限描述符(BSIDSSF 2026);提权路径绕过(→ 渗透测试-后渗透)。 - Linux 栈提权组合:SUID + 溢出。
解释器PWN¶
- 自定义 VM/字节码解释器:指令调度越界、栈机深度不检查、寄存器索引 OOB。
- 解释器逃逸族:CPU 模拟器 print opcode 的 Python eval 注入(Midnight Sun CTF 2018);Unicorn sysenter/冷门 syscall 绕黑名单(Meepwn CTF Quals 2018);自定义 VM swap 指针自覆写(HITCON 2018);Lua 游戏逻辑整数下流(ASIS CTF Finals 2017);Ruby TracePoint 沙箱逃逸(HITCON 2017)。
- bf/JIT 类:Brainfuck JIT 括号不平衡 → RWX shellcode(VuwCTF 2025);GC null-ref 级联损坏(DiceCTF 2026);io_uring UAF SQE 注入(ApoorvCTF 2026)。
- 沙箱逃逸(Sandbox Escape)与 VM Escape 的通用判定:沙箱边界 = 哪些 syscall/能力被过滤;逃逸 = 找过滤器未覆盖的语义等价路径(→ 栈漏洞利用 RETF/x32、渗透测试)。
- Browser PWN:V8/SpiderMonkey 引擎漏洞(CVE 样本复刻)→ JIT 编译器类型混淆、Array slice 越界(WebKit CVE-2016-4622,Codegate 2019);V8 Math.random 可预测(XorShift128+,→ Crypto-MT19937);Electron 渲染进程 RCE 面(→ WEB-XSS Electron 节)。需要引擎调试环境(d8/gdb + debug symbols),CTF 出现于高阶场。
- Python/marshal 沙箱 → Misc pyjail。
工具速查¶
seccomp-tools dump ./pwn # 看 seccomp 规则
one_gadget ./libc.so.6 # og 约束
# FSOP 工具:house-of-apple 模板 / fsop.py 生成器
转向¶
- seccomp 对抗细节 → 栈漏洞利用;内核侧 → Linux内核漏洞利用