查找 GLIBC Libio 中能够劫持控制流和栈指针的 FSOP 代码路径。
libc.so.6,然后点击 Tools -> Plugins -> Find FSOP code pathLog 窗口中看到结果// GLIBC 2.34-0ubuntu3.2
3. _IO_wfile_underflow_mmap@0x86030 -> _IO_wdoallocbuf@0x83be0
0x8614d: call(0x83be0)
RIP/RDI DATAFLOW:
rbx = rdi -> rdi = rbx -> call(0x83be0)
RBP DATAFLOW:
rbp = [rdi + 0x98].q
CODE PATH:
eax = [rdi].d
=> [condition] (al & 4) == 0
rax = [rdi + 0xa0].q
rdx = [rax].q
=> [condition] rdx u>= [rax + 8].q
rdx = [rdi + 8].q
=> [condition] rdx u< [rdi + 0x10].q
rdi = [rax + 0x40].q
=> [condition] rdi == 0
0x83c0b: call([rax + 0x68].q)
RIP/RDI DATAFLOW:
rax = [rdi + 0xa0].q -> rax = [rax + 0xe0].q -> call([rax + 0x68].q)
RBP DATAFLOW:
(N/A)
CODE PATH:
rax = [rdi + 0xa0].q
=> [condition] [rax + 0x30].q == 0
=> [condition] ([rdi].b & 2) == 0
([0x216020] is the location of _IO_wfile_underflow_mmap in __libc_IO_vtables)
一条 FSOP 代码路径,可用于通过单次 FSOP 攻击执行栈迁移,适用于 GLIBC 2.24+。它也被称为 house of apple2,由 roderick01 独立发现。
我实际上在几周前就发现了这条代码路径,但这些天一直忙于其他事情,所以没有注意到已经有人发布了这条代码路径 X(
此插件基于 MIT 许可证 发布。