how2heap-fastbin_dup_consolidate.c

news/2024/11/14 19:57:16/

源码:

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>int main() {void* p1 = malloc(0x40);void* p2 = malloc(0x40);fprintf(stderr, "Allocated two fastbins: p1=%p p2=%p\n", p1, p2);fprintf(stderr, "Now free p1!\n");free(p1);void* p3 = malloc(0x400);fprintf(stderr, "Allocated large bin to trigger malloc_consolidate(): p3=%p\n", p3);fprintf(stderr, "In malloc_consolidate(), p1 is moved to the unsorted bin.\n");free(p1);fprintf(stderr, "Trigger the double free vulnerability!\n");fprintf(stderr, "We can pass the check in malloc() since p1 is not fast top.\n");fprintf(stderr, "Now p1 is in unsorted bin and fast bin. So we'will get it twice: %p %p\n", malloc(0x40), malloc(0x40));
}

环境:
ubuntu16.04
libc 2.23

编译:
gcc -g fastbin_dup_consolidate.c -o fastbin_dup_consolidate

条件:
free(fast_binA)的是fastbin_chunk;
malloc(largebin_chunk)的是largebin_chunk;

支持:
Libc各版本都行;

原理:
malloc(large_bin) 时由于是 large_bin chunk ,会调用 malloc_consolidate(),这个函数会遍历所有的 fastbin 把里面的 chunk 该合并合并,该清楚使用就标志清楚使用标志,然后全部插入 unsorted bin 中。

利用- double free:
malloc(largebin_chunk)后再次free(fast_binA)的时候,Fastbin对double free的检查机制是仅仅检查fastbin的头chunk是否与当前要释放的这个相同size的chunk地址一样。而我们的 chunk 早到 unsorted bin 中去了,所以为0,是不同的,不同就能再次执行free(fast_binA)。构造出 fastbin 和 unsorted bin 中都有同一个 chunk(fast_binA),也就是我们可以把它 malloc(fast_binA) 出来两次

总结:
利用malloc(largebin_chunk)把free(fast_binA)移动到unsorted bin中;
再次free(fast_binA),即double free了fast_binA;


http://www.ppmy.cn/news/202815.html

相关文章

OSI七层体系结构

一、计算机网络体系结构的形成 1.两台计算机要互相传送文件需解决很多问题 (1) 必须有一条传送数据的通路。 (2) 发起方必须激活通路。 (3) 要告诉网络如何识别接收方。 (4) 发起方要清楚对方是否已开机&#xff0c;且与网络连接正常。 (5) 发起方要清楚对方是否准备好接…

word恢复和粘贴按钮变灰色,不可用怎么办?

如果 Word 中的恢复和粘贴按钮变成灰色&#xff0c;可能是由于以下原因之一&#xff1a; 1. 文档处于只读模式。 2. 与 Office 相关的某些组件已损坏或缺失。 3. Word 的文件权限被配置为只读。 以下是一些可能的解决方法&#xff1a; 1. 检查文档是否处于只读模式。 如果是…

【day 02】vue的相关指令1

内容渲染指令 条件渲染指令 v-if 条件性的渲染一块内容 判断为true才会被渲染 v-else 两个分支 同一个判断语句 v-else-if 多个分支 标题的判断语句 应用&#xff1a; 加载的图标 回到顶部 侧边栏 v-show 修改dom的display v-if和v-show 的区别 v-if 为false 元素直接不存在…

海信A5 pro 测评

本人购买海信A5 pro 竹雅绿 6g128g 外观上还不错。精致。 计步 nfc 等常用功能都有。 电池正常用可以用3天。 无线性马达。震动反馈一般。 扫码没有问题。底层为安卓10&#xff0c;还是很好用。

海信IP103H-S905L3-B-5621DS安卓9.0线刷包(内蒙古移动)

内蒙古移动海信IP103H-S905L3-B-5621DS安卓9.0线刷包 固件特点&#xff1a; 1、修改dns&#xff0c;三网通用&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、无开机广告&#xff0c;无系统更新&#xff0c;不在被强制升级&#xff1b; 4、大量精…

入手评测 海信65e7g pro和雷鸟65r645c 选哪个

TCL雷鸟65R645C是4K HDR电视&#xff0c;但海信65E7G-PRO不是HDR电视&#xff0c;在同等价位下&#xff0c;这一点海信65E7G-PRO已经输了。选海信65e7g pro还是雷鸟65r645c这些点很重要看过你就懂了http://www.adiannao.cn/dw 海信65E7G-PRO价格和雷鸟相差不大啊&#xff0c;在…

海信A7水墨屏手机无法启动

刚买一天的海信A7水墨屏手机&#xff0c;重启之后没反应了&#xff0c;在这个界面不动了&#xff1a; 如果是关机状态&#xff0c;底部应该有一行字的。现在看上去是卡死了。 在百度贴吧中有人提出了这个问题&#xff0c;有人回复说长按电源键15秒&#xff0c;我尝试了一下&am…

【Svelte】一个简单的前端框架

Svelte.js的学习成本高吗&#xff1f; Svelte是新手编码初学者的完美平台。只需一个HTML/CSS和JavaScript技能组合&#xff0c;您就可以从头开始构建您的第一个网站&#xff0c;而无需额外的知识。 这使得学习曲线非常小&#xff0c;不像它的大多数替代方案。除此之外&#xf…