
Плагин для Binary Ninja, который сканирует glibc libio на предмет путей кода FSOP, способных перехватить управляющий поток и указатель стека, помогая в исследованиях эксплуатации кучи.
Находит путь кода FSOP, который может перехватить поток управления и указатель стека в GLIBC Libio.
libc.so.6 в Binary ninja, затем нажмите 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.