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,表示前块为空
相关文章推荐
- Linux内核提权查询
- MySQL5.6主从复制的配置(CentOS-6.6+MySQL-5.6)(二)
- MySQL5.6源码编译安装(CentOS-6.6+MySQL-5.6)(一)
- linux ar命令
- CentOS7下配置QT环境常出现的问题
- Linux命令行下安装Maven与配置
- Linux驱动开发之 七 (不知道目录结构,何谈Linux)
- Linux下GCC相关知识点
- 在外网使用ssh连接内网中的多台Linux服务器
- linux多线程编程
- 线程同步(7):linux和Windows线程池的实现-案例
- 线程同步(6):linux 多线程pthread中的各种函数
- 聊聊 Linux 中的五种 IO 模型
- Linux指令学习
- CentOS7下的grub2添加win7引导
- linux mint修改启动级别
- Linux SWAP分区和虚拟内存
- linux;ar,gcc,ldd,nm命令详解
- linux tar命令详解
- linux 终端 标签 快捷键