堆漏洞要点

重点:fast、unsort bin拿出来的chunk它的fd和bk会被保存 ->例题(ByteCTF/mulnote、攻防世界noleak)

堆溢出

前提:可写入堆的大小超过本身chunk size
作用:将数据溢出到下一个chunk进行数据覆盖改
利用思路:通过chunk0溢出数据到chunk1达到unlink的效果实现任意写

unlink

前提:有堆溢出漏洞、可写入next chunk的头部和fd和bk值、已知位置存在一个指针指向伪造fake chunk的chunk(无pie)
作用:修改ptr的指针、任意地址写
检查: if (__builtin_expect (FD->bk != P || BK->fd != P, 0))
//利用思路:设置有uaf的chunk处的地址为ptr,修改fd为ptr-0x18,bk为ptr-0x10完成检查则会进行unlink那么chunk的指针会被修改为ptr-0x18
利用思路:设置有指针指向fack chunk的chunk处的地址为ptr,修改fd为ptr-0x18,bk为ptr-0x10完成检查则会进行unlink那么ptr的指针会被修改为ptr-0x18

off-by-one

前提:能溢出一个字节如:for(i=0;i<=len(buf);i++)
作用:可修改下个chunk的p标志位
利用思路:1.堆重叠(2.28前)  2.通过溢出p标志位修改本chunk为free状态进行unlink+任意读写 3.如果只能修改堆块的size,那么可以尝试chunk overlap

fastbin attack

fastbin attack是一类漏洞的利用方法,是指所有基于fastbin机制的漏洞利用方法

  1. fastbin double free
前提:uaf漏洞 | 堆溢出 、类型是fast chunk
作用:任意地址写
检查:1.当前free的chunk与fastbin表头的chunk是否一致 2.malloc时会检查预分配时的chunk size是否与fast bin链表的size相同
绕过:1.两次free间隔一个free一个其他size的fastbin chunk 2.fake chunk的size和fash bin的size设为一致
利用思路:实现了使用多个指针控制同一个堆块修改fd指针实现任意地址分配堆块、任意地址写
  1. double free + __malloc_hook
前提:uaf漏洞、double free 、leak libc
利用思路:实现了使用多个指针控制同一个堆块修改fd指针实现将chunk分配到__malloc_hook区域然后改写__malloc_hook的内容

unsort bin

前提:uaf、可以写入free chunk的bk
作用:将__malloc_hook地址写入到ptr区中
利用思路:将在unsort bin里的chunk的bk值改为target-0x10,再将它拿出来此时unsort chunk(main_arena+88)的地址就会写入到target地址处,此时改变它的地址最后1字节为\x10那么它就会指向__malloc_hook
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值