house of orang 基本原理:
覆盖unsorted bin空闲块,修改其大小为0x61(small bin [4]),修改bk指向 _IO_list_all
-0x10,同时布置fake file struct,然后分配堆块,触发unsorted bin attack 修改 _IO_list_all
,将修改过的unsorted bin 放入 small bin 4中,继续遍历unsorted bin会触发异常,调用 malloc_printerr
,该函数调用栈如下:
1 | malloc_printerr |
如果能够伪造 _IO_OVERFLOW
函数,便可以get shell。
在调用_IO_OVERFLOW
之前,会做一些检查
1 | 0841 if (((fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base) |