0%

unsortedbin

关于unsorted bin atk的一些研究.

0x0 条件&效果

Unsorted Bin Attack被利用的前提是控制Unsorted Bin Chunk的bk指针.
Unsorted Bin Attack可以达到的效果是实现修改任意地址值为一个较大的数值.

0x1 Unsorted Bin 回顾

Unsorted Bin 来源.

  1. 当一个较大的chunk被分割成两半后, 如果剩下的部分大于MINSIZE, 就会被放到Unsorted Bin中.
  2. 释放一个不属于 fast bin 的 chunk, 并且该 chunk 不和 top chunk 紧邻时, 该 chunk 会被首先放到 unsorted bin 中. 关于 top chunk 的解释, 请参考下面的介绍.
  3. 当进行 malloc_consolidate 时, 可能会把合并后的 chunk 放到 unsorted bin 中, 如果不是和 top chunk 近邻的话.

Unsorted Bin 使用

  1. Unsorted Bin 在使用的过程中, 采用的遍历顺序是 FIFO, 即插入的时候插入到 unsorted bin 的头部, 取出的时候从链表尾获取.
  2. 在程序 malloc 时, 如果在 fastbin, small bin 中找不到对应大小的 chunk, 就会尝试从 Unsorted Bin 中寻找 chunk.如果取出来的 chunk 大小刚好满足, 就会直接返回给用户, 否则就会把这些 chunk 分别插入到对应的 bin 中.