Off By One

通常的利用思路是覆盖被溢出堆块的下一个堆块size域的最低一字节,可以扩展堆块,也可以缩减堆块,只是后者对数据构造的要求更高一些

后向扩展

  • 这里称被溢出堆块的下一个堆块为target堆块
  • 通过off by one漏洞可以轻易地让target堆块的size变大,即可让target包含高地址相邻堆块的内容
  • 后续的利用可以配合UAFUnlink攻击的利用

例题:

Off By Null

  • 仍然存在单字节溢出,只是溢出的值为'\0',可以缩减堆块
  • 更常规地是将target堆块的prev_inuse比特清零,达到伪造被溢出堆块被free的状态
  • 后续构造prev_size和fake_chunk进行unlink攻击,从而达到堆块重叠

例题

mmap overlapping chunks

例题