fastbin_attack_double_free

本文最后更新于 2024年10月13日 晚上

fastbin_attack_double_free

Fastbin Attack

简单的介绍一下,我们可以根据名字看出,这一类漏洞利用的方法主要基于fastbin机制的缺陷,其实fastbin attack并不是指某一种利用方法,而是一些。这类利用的前提是:

存在堆溢出、use-after-free等能控制chunk内容的漏洞
漏洞发生于fastbin类型的chunk中
如果细分的话,可以做如下的分类:

Fastbin Double Free
House of Spirit
Alloc to Stack
Arbitrary Alloc
前两种主要漏洞侧重于利用free函数释放的真的 chunk或伪造的chunk,然后再次申请chunk进行攻击,后两种侧重于故意修改fd指针,直接利用malloc申请指定位置chunk进行攻击。这篇文章主要讲解的是Fastbin Double Free,后几种会在之后文章中继续讲解

原理:

1.fastbin 管理chunk是单链表管理

2.由fastbin管理的chunk即使被释放,其next_chunk的prev_inuse位也不会被清空

利用

先创建3个chunk并free掉,可以看到三个chunk按单链表的形式进入fastbin,

chunk3fd指针是指向chunk2的,chunk2fd指针是指向chunk1,那么是谁来指向chunk3呢?

其实是main_arena指向了chunk3prev_size

并且free的验证只验证main_arena指向的chunk,

也就是说fastbin中的chunk1是可以再次free的

此时chunk1fd指针是指向chunk2的,如果我们可以控制chunk1fd指针,我们假设将指针指向一个在bss段的未free的chunk,在把三个chunk重新申请

可以看到,虽然bss_chunk没有free,但是fastbin还是把他当成free来用


fastbin_attack_double_free
http://example.com/2024/10/06/fastbin-double-free/
作者
清风
发布于
2024年10月6日
许可协议