large bin attacck
对large bin(0x400以上)攻击
1.分配一块0x428内存 ,记为p1。
2.分配0x18内存,防止malloc consolidate。
3.分配目标内存,大小为0x418,小于第一块内存,记为p2。
4.分配0x18内存,防止malloc consolidate。
5.free p1,进入unsort bin
6.分配0x438内存,大小超过p1 0x428,使p1进入largebin
7.设置p1->bk_nextsize为目标区域
8.free p2,进入unsortbin,到目前为止,p1在large bin,p2在unsort bin中。
9.分配一块内存,大小超p2,例p2进入large bin。
10.在_int_malloc() large bin处理代码段,p1->bk_nextsize被赋给p2->bk_nextsize。
知识点:
if ((unsigned long) (size < (unsigned long) chunksize_nomask (bck->bk) {
fwd = bck;
bck = bck->bk;
victim->fd_nextsize = fwd->fd;
victim->bk_nextsize = fwd->fd->bk_nextsize;
fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim
}
打*号的内存bk_nextsize赋给新插入的victim bk_nextsize。没有做检查。