house of apple

条件:

  1. main函数返回或能调用exit函数
  2. 能泄漏出heap地址exit地址
  3. 能使用一次largebin attack

当程序从main函数返回或执行exit函数时,均会调用fcloseall函数
该调用链为:

  • exit
    • fcloseall
      • _IO_cleanup
        • _IO_flush_all_lockp_
          • _IO_OVERFLOW

最后会遍历_IO_list_all存放的每一个IO_FILE结构体,如果满足条件的话,会调用每个结构体中vtable->_overflow函数指针指向的函数

使用largebin attack可以劫持_IO_list_all变量,将其替换为伪造的IO_FILE结构体,而在此时,我们仍可以继续利用某些IO流函数去修改其它地方的值。要想修改其它地方的值,就离不开_IO_FILE的一个成员_wide_data的利用


house of apple
http://example.com/2025/03/31/house-of-apple/
作者
yvyvSunlight
发布于
2025年3月31日
许可协议