堆相关漏洞利用libc异常提示原因记录

37 篇文章 3 订阅

Memory Corruption (fast)

原因

size为fast bin范围。

fastbin取出的chunk的size不属于该fastbin

smallbin double linked list corrupted

原因

size 为smallbin 范围。

smallbin的最后一个被取出的时候发现不为double linked list。

如拿出的那一个为victim,是small bin的最后一个,必须满足victim -> bk -> fd == victim,否则会报这个错误

memory corrption

原因

当unsorted bin中有chunk时,

取unsorted bin的最后一块的时候,必须要求size 大于 2 * SIZE_SZ,且小于system_mem

corrupted unsorted chunks

原因

size 为 large bin范围时,

分配时,对于chunk剩下的空间会被放入last remainder,然后放于unsorted bin,这时如果unsorted bin的第一个fd不等于unsorted bin的位置会报找这个错误。

invalid pointer

原因

在free的时候,如果alignment出错或者chunk address大于-size将会报这个错误

invalid size

原因

在free的时候,如果size大小不合法,比如没有满足对齐,或者小于MINSIZE将会报这个错误

invalid next size (fast)

原因

size是fastbin的时候

如果下一块的chunk size不合法(size大于MINSIZE,小于system_mem),会报这个错误

double free or corruption (fasttop)

原因

fastbin的第一块chunk不能是正在free的chunk

double free or corruption (top)

原因

size是small bin 或 large bin时,

正在free的chunk和topchunk的位置不能相同

double free or corruption (out)

原因

下一个chunk的位置如果超出Heap边界即出错

double free or corruption (!prev)

原因

根据下一块chunk的inuse bit确定当前free的chunk是否能被free,如果不正确则出错

invalid next size (normal)

原因

size是small bin 或 large bin时,确认下一块chunk是否在正确范围(大于2*SIZE_SZ,小于system_mem)

corrupted unsorted chunks

原因

small bin & large bin 在unlink后,准备放入unsorted bin时,会先取第一块chunk,检查该chunk的bk是否为unsoted bin

corrupted double linked list

原因

unlink时的检查,确认p->bk->fd == p以及 p->fd->bk == p

corrupted size vs. prev size

原因

unlink时的检查,确认下一块的prev size和当前块的size相同.

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值