How2Heap堆利用学习心得(二)

访客4年前黑客资讯826

上一篇,大家详细介绍了一种Double free技术性。而且完成了对malloc_hook的fastbin_attack。

此次将详细介绍怎样利用malloc中的consolidate体制来完成double free。文中会涉及到一些源码,若有表述不正确,恳求诸位高手纠正。

0x01 利用consolidate的Double Free

1.1 fastbin_dup_consolidate剖析

更先剖析一下实例编码

#include

#include

#include

int main(){

void* p1=malloc(0x40);

void* p2=malloc(0x40);

fprintf(stderr, "Allocated two fastbins: p1=%p p2=%pn", p1, p2);

fprintf(stderr, "Now free p1!n");

free(p1);

void* p3=malloc(0x400);

fprintf(stderr, "Allocated large bin to trigger malloc_consolidate(): p3=%pn", p3);

fprintf(stderr, "In malloc_consolidate(), p1 is moved to the unsorted bin.n");

free(p1);

fprintf(stderr, "Trigger the double free vulnerability!n");

fprintf(stderr, "We can pass the check in malloc() since p1 is not fast top.n");

fprintf(stderr, "Now p1 is in unsorted bin and fast bin. So we'will get it twice: %p %pn", malloc(0x40), malloc(0x40));

}

编译程序时刻加-g主要参数,动态性调节中能够同歩源代码开展剖析。

1.2步骤剖析

程序流程更先malloc分派了2个0x40的运行内存p1和p2,随后free掉chunk_p1,低于64的chunkp1会被链入fastbins中。

gef? x/40gx 0x602010-0x10

0x602000: 0x0000000000000000 0x0000000000000051

0x602010: 0x0000000000000000 0x0000000000000000

0x602020: 0x0000000000000000 0x0000000000000000

0x602030: 0x0000000000000000 0x0000000000000000

0x602040: 0x0000000000000000 0x0000000000000000

0x602050: 0x0000000000000000 0x0000000000000051

0x602060: 0x0000000000000000 0x0000000000000000

0x602070: 0x0000000000000000 0x0000000000000000

0x602080: 0x0000000000000000 0x0000000000000000

0x602090: 0x0000000000000000 0x0000000000000000

0x6020a0: 0x0000000000000000 0x0000000000020f61

查询快表,能够见到被释放出来的chunk_p1

gef? heap bins fast

─────[ Fastbins for arena 0x7ffff7dd1b20 ]─────

Fastbin[3]→ UsedChunk(addr=0x602010,size=0x50)

实行分派0x400运行内存,这时看fastbin,发觉chunk_p1早已被从快表中卸掉了。而我们在 *** all bins中找到它。

gef? heap bins fast

────[ Fastbins for arena 0x7ffff7dd1b20 ]───

Fastbin[0]0x00

Fastbin[1]0x00

Fastbin[2]0x00

Fastbin[3]0x00

gef? heap bins *** all

───[ Small Bins for arena 'main_arena' ]────

[ ]Found base for bin(4): fw=0x602000, bk=0x602000

→ FreeChunk(addr=0x602010,size=0x50)

glibc在分派large chunk(>1024字节数)时,更先实际操作是分辨fast bins是不是包括chunk。假如包括,则应用malloc_consolidate涵数将fastbin中的chunk合拼,并放进unsortbins。依据尺寸放进 *** all bins/large bins。

要我根据glibc源代码开展阅读文章剖析 ,FTP下载链接,malloc的完成在/malloc/malloc.c

malloc.c在1055行各自界定了malloc free realloc涵数

static void* _int_malloc(mstate, size_t);

static void _int_free(mstate, mchunkptr, int);

static void* _int_realloc(mstate, mchunkptr, INTERNAL_SIZE_T,

? INTERNAL_SIZE_T);

在_int_malloc的Define下寻找开启consolidate的编码一部分。

更先根据have_fastchunks分辨fastbins是不是链有空余堆。

have_fastchunks的宏定义即是分辨fastbin中是不是包括chunk,flag为0的情况下表明存有chunk。

#define have_fastchunks(M) (((M)->flags & FASTCHUNKS_BIT)==0)

假如包括chunk,可能启用consolidate来合拼fastbins中的chunk,并将这种空余的chunk添加unsorted bin中。

本实例开启consolidate的源代码

/*

? If this is a large request, consolidate fastbins before continuing.

? While it might look excessive to kill all fastbins before

? even seeing if there is space available, this avoids

? fragmentation problems normally associated with fastbins.

? Also, in practice, programs tend to have runs of either *** all or

? large requests, but less often mixtures, so consolidation is not

? invoked all that often in most programs. And the programs that

相关文章

网上可以查到别人的酒店入住记录吗

徐子淇个人资料 命好的徐子淇成为千亿媳妇连生四个孩子 其实,大家都知道嫁入豪门当阔太太是很不容易的,而艺人嫁入豪门是家常便饭,但正在收获幸福的能有几个?并不是说所有都不幸福,今天就来说说幸福之一的徐子...

掌握更多IT业界信息,才能找到更多发财机会

要想获得更多发展的机会,我们怎么样去做才能够达到目的呢?其实经常都会有人在网上去寻找商机,但是我们要知道不管是商机也好,还是我们平时想要找到投资项目也好,这些都是在网络的信息当中包含着的,如果我们不懂...

ai图形怎么添加高斯模糊效果,ai制作不同程度高斯模糊的技巧

一些网民表明还不太清晰ai图型如何加上高斯模糊实际效果的有关实际操作,而这节就详细介绍了ai制做不一样水平高斯模糊的方法,还不掌握的盆友就跟随我学习培训一下吧,期待对大家有一定的协助。       一...

无线网卡是什么(无线网卡怎么选购)

无线网卡是什么(无线网卡怎么选购)

《三国志·蜀志传》记载,昭烈皇帝刘备临终遗诏告诫刘禅,勿以恶小而为之,勿以善小而不为。这是一种做人乃至生活的态度,极具教育意义。 说起无线网卡,不少人对于小配件都不重视。其实,无线网卡选购同样是有学...

官方部署国庆中秋假柴树藩期森林草原防灭火工作

  中新网10月4日电 据应急管理部网站消息,针对当前严峻的秋冬季防灭火形势,国家森林草原防灭火指挥部办公室、应急管理部会同林草、气象等部门专题会商秋冬季火险形势,多次就秋冬季特别是国庆中秋假期的森林...

黑客帝国矩阵重启片尾曲(黑客帝国矩阵重启预告片)

黑客帝国矩阵重启片尾曲(黑客帝国矩阵重启预告片)

本文目录一览: 1、谁知道黑客帝国1片尾曲叫什么? 2、求一首《黑客帝国》的歌! 3、片尾曲 4、黑客帝国 矩阵革命结束时的音乐是什么 在哪能下到 5、黑客帝国3片尾曲歌词是什么意思啊...