有些情况下,仅有malloc/calloc/realloc和free两种功能,并且可以实现任意地址分配,如果想要达到利用,还需要知道地址,在glibc下,一般就是攻击_IO_2_1_stdout_结构体来实现信息泄露,通过低字节覆盖unsorted bin留下的main_arena指针,再加以爆破4位,就能分配到_IO_2_1_stdout_,通过篡改_IO_2_1_stdout_的flags为0x0FBAD1887,_IO_write_base低字节覆盖,然后当程序调用puts输出任意信息时,就会输出_IO_write_base到_IO_write_ptr之间的数据,而这之间就有libc的指针。
下面以三个例子为例。