Unsortbin攻击原理及过程

Unsortbin攻击是一种针对堆溢出漏洞的攻击手法,该攻击利用了unsortbin这种未排序的块来实现攻击。Unsortbin攻击的前提是能够控制unsortbin块的bk指针,以此来改变任意地址的值。

Unsortbin攻击的原理如下:

1. 当一个较大的chunk被分割成两半后,如果剩下的部分大于MINSIZE,就会被放入unsorted bin中。

2. 释放一个不属于fast bin的chunk,并且该chunk不和top chunk紧邻时,该chunk会被首先放入unsorted bin中。

3. 如果不是和top chunk近邻的话,在进行malloc_consolidate时,可能会把合并后的chunk放入unsorted bin中。

由于unsortbin是双向链表且是FIFO(先进先出)的原则,当修改free chunk下的bk指针为目的地址-0x10的位置时,可能会导致unsortbin链表的破坏,进而可能在释放chunk时出现问题。

Unsortbin攻击需要修改free chunk的bk指针为目的地址-0x10的位置,当释放这个chunk时,unsortbin的链表可能会被破坏,从而可能造成后续的问题。

主要涉及的代码如下:

/* remove from unsorted list */
unsorted_chunks (av)->bk = bck;
bck->fd = unsorted_chunks (av);

完整的反汇编分析和题目链接可以在https://www.cnblogs.com/CH13hh/p/18158419中找到。

Unsortbin攻击可以通过修改magic地址为一个较大的值来实现。在这里我们可以使用unsortbin攻击来修改magic的地址为一个较大的值,进而完成对magic地址的修改。

Unsortbin攻击是一种利用unsortbin未排序块的特性来实现的堆溢出漏洞攻击,可以通过修改指针来改变地址的值,进而实现攻击。该攻击需要谨慎使用,以避免对系统造成损害。

标签:游戏攻略