没有合适的资源?快使用搜索试试~ 我知道了~
资源堆漏洞挖掘实用知识库分享知识分享
资源推荐
资源详情
资源评论
堆漏洞挖掘
目录
堆漏洞挖掘 1
The malloc maleficarum之The House of Force漏洞 2
The malloc maleficarum之The House of Spirit漏洞 12
fastbin attack漏洞之__malloc_hook攻击 20
什么是堆漏洞挖掘?堆的glibc实现、Arena(main_arena、thread_arena) 28
堆漏洞挖掘:02---堆的glibc实现与Arena(struct malloc_state、struct _heap_info) 36
堆漏洞挖掘:05---堆的调用流程与相关概念 43
堆漏洞挖掘:19---_lib_malloc函数源码详解 46
堆漏洞挖掘:21---_lib_free函数源码详解 48
堆漏洞挖掘:23---The malloc maleficarum 50
堆漏洞挖掘——__lib_malloc函数、_int_malloc函数、__lib_free函数源码详解 51
堆漏洞挖掘——fastbin attack漏洞 70
堆漏洞挖掘——malloc一个chunk的检测机制 76
堆漏洞挖掘——unsortedbin attack漏洞 79
堆漏洞挖掘——多线程中的堆内存结构 87
堆漏洞挖掘中bins的单向链表、双向链表存储结构 94
堆漏洞挖掘中chunk的NON_MAIN_ARENA、IS_MAPPED、PREV_INUSE位 110
堆漏洞挖掘中chunk的malloc、free 120
堆漏洞挖掘中chunk的mchunk_prev_size成员的空间复用 131
堆漏洞挖掘中chunk的实际大小、最低大小、 mchunk_size成员 137
堆漏洞挖掘中fastbins的大小(DEFAULT_MXFAST、MAX_FAST_SIZE) 142
堆漏洞挖掘中last remainder的深度剖析 144
堆漏洞挖掘中堆块的unlink 162
堆漏洞挖掘中的Chunk分类(allocated chunk、free chunk、top chunk、last remainder chunk) 167
堆漏洞挖掘中的bins分类(fastbin、unsorted bin、small bin、large bin) 169
堆漏洞挖掘中的malloc_consolidate与FASTBIN_CONSOLIDATION_THRESHOLD 179
堆漏洞挖掘中的top chunk的向前合并 199
堆的调用流程、堆漏洞挖掘中的malloc_chunk结构体分析 209
The malloc maleficarum之The House of Force漏洞
一、The malloc maleficarum的历史由来
从2004年末开始,glibc malloc变得更可靠了。之后,类似unlink的技巧已经废弃,攻击者
没有线索。但是在2005年末,Phantasmal Phatasmagoria带来了一些其他技巧,用于成功利
用堆溢出
二、The malloc maleficarum的内容
虽然The malloc maleficarum技术最初包含5个内容,但是由于glib 2.23源码的发布,下面
有些技术已经废弃了,不能够再使用了
The House of Prime(废弃)。
The House of Mind(废弃)。
The House of Force。
The House of Lore(废弃)。
The House of Spirit。
三、漏洞原理
攻击者通过堆溢出或者其他方式,控制到topchunk的size成员,这样我们就可以使topchunk
的地址超出正常的堆段的地址,这样我们就可以控制到超出堆段之外的内存。
四、漏洞实现
①通过堆溢出或其他方式,控制到topchunk的size成员。
②将topchunk的size成员变为一个非常大的数,这样topchunk就会超出内存中的堆段,从而
访问到其他段的内存地址(got表的地址)。
③此时通过malloc申请内存的时候,申请的就是got的内存地址,就可以更改got内存的内
容。
五、虚拟机逃逸技术
原理:我们在Windows主机中安装VMTools等软件,然后在软件中开启一个虚拟机。在虚拟机
中书写一个程序,程序中包含The House of Force漏洞,因为VMTools原本就是在Windows主
机的内存中开辟的一块内存空间,所以我们就可以利用虚拟机中程序的The House of Force
漏洞,越界访问到VMTools之外的Windows主机的内存,从而可以控制内存的内容(例如开启
一个计算器程序或者开启一个shell)。
六、演示案例
#include<stdio.h>
#include<malloc.h>
#include<unistd.h>
#include<string.h>
int main(){
The malloc maleficarum之The House of Force漏洞
第 1 页 /共
211 页
long *p = malloc(0x10); //
sleep(0); //
*(p+0x3) = -1; //
sleep(0);
malloc(-4120); //
sleep(0);
void *q = malloc(0x10); //
sleep(0);
strcpy(q,"aaaaaaaa"); //
sleep(0);
malloc(0); //
sleep(0);
return 0;
}
第一步
申请一个堆块,用p指针接收,p指向此堆块的fd成员。此时堆中只有p这个chunk和
topchunk两个chunk。
第二步
The malloc maleficarum之The House of Force漏洞
第 2 页 /共
211 页
将p+0x3位置处的地址赋值-1,也就是将topchunk的size成员赋值为-1(因为p为long类
型,在64位系统下为8字节,且chunk的成员也为8字节,又因为p不是largechunk,所以
chunk的fd_nextsize和bk_nextsize成员没有被使用。因此p+0x3就是topchunk的size成
员的地址)。
为什么要设置为-1:malloc的参数在进入_lib_malloc函数的时候会被转换为无符号整
数,那么topchunk的size成员就会变为整数中的最大值(0xffffffffffffffff),此时
topchunk能够操控的地址范围就会非常大,并且已经超出了原本堆段的地址。
当我们再去用heap查看topchunk的时候就看不到了,但是我们可以使用x命令查看内
存,查看topchunk的结构(可以看到topchunk的size成员的值此时为
0xffffffffffffffff)。
The malloc maleficarum之The House of Force漏洞
第 3 页 /共
211 页
剩余212页未读,继续阅读
资源评论
蜜糖果果呀~
- 粉丝: 4482
- 资源: 75
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功