large bin attack 利用分析

例题

利用思路:,,

  • 主要利用过程在 malloc 分配 反向遍历解除 unsorted bin list 的大循环中
    • 利用条件: (提到的 fakechunk 相关值可以调整 , 此处仅为成功样例)

      • 可控内容 large bin chunk 1 个 | bk = fake_chunk - 0x10 + 3 , bk_nextsize = fake_chunk - 0x8
      • 可控内容 unsorted bin chunk 1 个 | bk = fake_chunk
      • chunksize(large_bin) < chunksize(unsorted_bin)
      • 分配一个 最终size 为 0x50 的 chunk (触发利用)
      • pie开启(此条件非必须,但是极大提高利用的稳定性)
    • 利用的漏洞点

      • unsorted bin attack
        • image.png
          1. fake_chunk -> fd = libc_addr (xxxxx 根据libc版本和程序位数有所不同)
          1. 将fake_chunk 置为最后一个 unsorted_bin_list , 下一个进行解链
      • 两个任意地址写堆地址
          1. image.png
          • 重点语句为 victim->bk_nextsize->fd_nextsize = victim
          • 作用
            • (fake_chunk-0x8)->fd_nextsize = victim
          1. image.png
          • 作用:
            - (fake_chunk - 0x10 + 3)->fd = victim | 此处 + 3 是为了偏移从而设置 fake_chunk 的 size
            - 至此构造成功了一个 size 为 0x56 , fd = libc_addr , bk = heap_addr 的chunk
  • 最终利用达成点:
    • image.png
    • 此处是为了在 构造的指定地址的fake chunk 初次取出时 因为 size 与 所需大小正好相等而被直接取出
      • 如果分配与构造大小不同的值则会因为下面按照算法匹配合适大小的chunk时无法通过size检查而报错
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容