fastbin attack + unsorted bin attack+ heap overflow+ double free fastbin + double free unlink

本文详细介绍了Glibc堆管理中的Fastbin攻击和Double Free漏洞利用技术,包括如何利用Fastbin攻击泄露堆地址、通过unsorted bin攻击控制堆分配,以及Heap Overflow和Double Free在unlink机制下的利用方法。通过这些技术,攻击者可以操控内存,实现地址泄露和代码执行。
摘要由CSDN通过智能技术生成

基础知识:
0x1
当第一个small chunk被释放时(不管放在unsorted,还是small bin),它的fd、bk指向一个指针,这个指针指向top chunk地址,这个指针保存在main_arena的0x58偏移处,而main_arena是libc的data段中,是全局静态变量,所以偏移也是固定的,根据这些就可以计算出libc的基地址了
0x2
chunk进入small bin和large bin的唯一机会是在分配一个chunk时,在unsorted bin中进行遍历,size不合适的chunk会被unlink回来,回到所属的small或者largebin。
0x3
大于128(64bit,32bit是64)申请small bin,free一个smallchunk,如果他的前一个或者后一个是freed,那么进行unlink合并,然后放到unsorted bin的第一个位置,如果他是第一个free的chunk,也是放到unsorted bin
0x4
topchunk是往后(大地址)移动的,新分配的chunk与topchunk相邻,与topchunk相邻的chunk,free之后会被合并到topchunk(除了fastbin)
0x5
unsortbin的特性,产生一个unsortbin,随后申请小的fastchunk会去切割这个unsortbin,剩下的部分即使在fastbin范围内也形成一个很小的unsortbin。off by one可以利用这个特性完成堆叠泄露信息。
0x6
calloc函数在重新申请堆的时候会清空指针,比如说,我们重新使用fastbin的chunk,申请到了会清空fd。这样无法利用常规的unsortbin重用进行libc基址泄露。

fastbin attack和泄露
0x1
fastbin依靠单链表来组织的,堆管理结构始终维护一个指向最后一个free的chunk的指针(这给chunk的fd,指向的是下一个chunk(倒数第二个free的)起始地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值