覆盖 _IO_2_1_stdout 泄漏 libc 地址
PWN 类型的题基本上都需要用到 libc 的地址,一般情况可以通过获取程序 GOT 表填充的 libc API 地址通过相对偏移计算出 libc 基址。但是也有时候没办法直接读 GOT,这时候如果可以实现任意位置写,那通过覆盖 _IO_2_1_stdout
的方式就可以泄漏 libc 地址。
操作上比较简单,直接把 _IO_2_1_stdout
结构开头的 flag
置为 0x00000000fbad1800
,并将 _IO_write_base
低字节位改小,然后等着程序调用 puts
、 printf
函数即可将 libc 地址泄漏到标准输出里。