美文网首页
mmap overlapping chunks

mmap overlapping chunks

作者: clive0x | 来源:发表于2021-02-04 10:58 被阅读0次

    https://github.com/shellphish/how2heap/blob/master/glibc_2.31/mmap_overlapping_chunks.c

    https://maxwelldulin.com/BlogPost?post=6967456768

    http://tukan.farm/2016/07/27/munmap-madness/

    相关知识点:

    1.mmap chunk   size字段与普通chunk size意义一样,prev_size字段意义不一样,表示padding字节数(因mmap chunk以page_size对齐)

    2.mmap chunk分配 起始值:mp_.mmap_threshold ,随着上一次free mmap chunk动态变化,取最大值,尽量减少mmap数量。

    3.munmap free时,公式为:

    block =  victim_ptr - prev_size

    size = prev_size + size

    munmap(block,size)

    通过修改size,可达到释放victim_ptr 之后的内存,通过修改pre_size,释放victim_ptr之前的内存。

    4.munmap之后的内存,重新利用方式有几种:

    a.调用malloc,重新mmap,注:大小上次free大小,跳过mp_.mmap_threshold检测

    b.dlopen动态加载so

    c.mmap大文件,如媒体文件

    d.启动新线程,创建thread stack,默认大小为RLIMIT_STACK:8M

    5.munmap目标利用点:

    a.heap brk

    b.可执行文本段

    c.第三方so可执行文本段

    d..got/.data/.bss段,其中.got段相对利用最容易,可以与symbol resovle结合,达到任意函数执行

    e.其它mmap chunk,就像本case

    f.其它 thread stack。

    6.关于位置

    kernel

    stack

    .mmap top

    .libc

    .mmap2

    .mmap3

    xxxx

    .heap

    .bss

    .data

    .text

    https://maxwelldulin.com/BlogPost?post=6967456768 中总结:

    开始是从高地址向低地址,到一定阶段后,从低地址向高地址,如此多次反复。这里画的是初始阶段。

    相关文章

      网友评论

          本文标题:mmap overlapping chunks

          本文链接:https://www.haomeiwen.com/subject/qzxbtltx.html