0x0 条件&效果
Unsorted Bin Attack被利用的前提是控制Unsorted Bin Chunk的bk指针.
Unsorted Bin Attack可以达到的效果是实现修改任意地址值为一个较大的数值.
0x1 Unsorted Bin 回顾
Unsorted Bin 来源.
- 当一个较大的chunk被分割成两半后, 如果剩下的部分大于MINSIZE, 就会被放到Unsorted Bin中.
- 释放一个不属于 fast bin 的 chunk, 并且该 chunk 不和 top chunk 紧邻时, 该 chunk 会被首先放到 unsorted bin 中. 关于 top chunk 的解释, 请参考下面的介绍.
- 当进行 malloc_consolidate 时, 可能会把合并后的 chunk 放到 unsorted bin 中, 如果不是和 top chunk 近邻的话.
Unsorted Bin 使用
- Unsorted Bin 在使用的过程中, 采用的遍历顺序是 FIFO, 即插入的时候插入到 unsorted bin 的头部, 取出的时候从链表尾获取.
- 在程序 malloc 时, 如果在 fastbin, small bin 中找不到对应大小的 chunk, 就会尝试从 Unsorted Bin 中寻找 chunk.如果取出来的 chunk 大小刚好满足, 就会直接返回给用户, 否则就会把这些 chunk 分别插入到对应的 bin 中.