您的位置:首页 > 运维架构 > Linux

Linux下堆漏洞的利用机制

2016-05-15 23:53 453 查看

1.保护机制

if (__builtin_expect (FD->bk != P || BK->fd != P, 0))
malloc_printerr (check_action, "corrupted double-linked list", P);


这个就是所谓的堆指针的check。

FD其实就是p->fd

BK其实就是p->bk

就是说:p->fd->bk=p

    p->bk->fd=p

就是做这么一个验证。

这个验证找一个指向堆的指针就可以绕过,但是要知道指针变量的地址,否则就是白扯。

为了触发unlink,需要伪造一个(2个)新块才行。其实就是

伪造的空块|伪造的使用中的块

释放使用中的伪造块就会造成伪造的空块调用unlink,因为这个触发了空块合并机制。

怎么指定的前块为空呢?

1.当前的prve_size有值,就是不为零

2.第三个flag为0,表示前块为空
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: