How2heap -- fastbin_dup_into_stack(by glibc-2.23)

本文详细分析了how2heap的fastbin_dup_into_stack.c,通过pwndbg调试展示了堆内存管理的过程,讨论了fastbin分配策略,特别是double free漏洞的产生原因和利用方式,最后提出了安全建议——free后应将指针置NULL。
摘要由CSDN通过智能技术生成

how2heap 的 fastbin_dup_into_stack.c 源码

pwndbg 调试观察

先malloc了3块内存

堆块结构:

这里堆信息显示的堆块地址都比栈上存储的堆块地址小0x10,这是因为heap显示的地址是堆块的真正的头部地址,指向的是堆块的第一个数据prev_size,而栈上存储的地址是返回给用户使用的指针fd的位置,pre_size和size字段在64位操作系统上都是8字节大小,所以前面占了0x10,导致看到的两个地址相差0x10大小

至于申请的堆块大小为0x20,实际size位显示的却比申请大小大1字节,这是因为size字段低三比特位为特殊的flag值

分别为

​ NON_MAIN_ARENA, 记录当前堆是否不属于主线程,1表示不属于,0表示属于

​ IS_MAPPED, 记录当前堆是否是由mmap分配的

​ PREV_INUSE, 记录前一个堆块是否被分配(就是是否在使用状态)

但是fastbin为了快速分配使用&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值