分类: Heap 堆

堆类别分类目录

7 篇文章

mallo函数流程详解
本文章推荐与源代码搭配食用。源码指路:https://elixir.bootlin.com/glibc/glibc-2.31/source/malloc/malloc.c对了,文章开头介绍的1.xx版本的内容都没用,引入ptmalloc之后改动大得很。 简略情报 堆功能出现的最早版本大概是在glibc 1.09?wow~ 好早啊啊 版本更迭 gli…
malloc文件阅读指北
第一次阅读malloc.c源文件,从头向下看记录了一些比较感兴趣的内容。 __malloc_assert 没啥用,针对malloc断言的处理内容,在源码中比较靠前的位置。 static void__malloc_assert (const char *assertion, const char *file, unsigned int line, c…
House of apple2
利用条件 House of apple的利用条件如下: 程序从main函数返回或能调用exit函数 能泄露出heap地址和libc地址 能使用一次largebin attack apple系列都是对fp->_wide_data的利用,其中apple1可以任意地址写已知值,类似于largebin attack。暂且不提 apple2延续了lar…
House of apple1
其实apple系列都是对fp->_wide_data的利用,apple1可以任意地址写已知值,通过伪造_wide_data变量。另house of apple之前,常用的堆利用手法都有: +--+ house of pig、house of kiwi、house of emma 利用条件 从main返回或调用exit(其实就是利用fclose…
unlink
unlink主要利用从双向链表中取出chunk时的操作,通过伪造fd和bk指向伪造的位置,触发后达成利用的一种手法。 下面是双向链表中取chunk的操作过程 当然,那是没保护情况,现在早就上保护了 // 由于 P 已经在双向链表中(已经被free),所以有两个地方记录其大小,所以检查一下其大小是否一致(size检查) if (__builtin_e…
setcontext
setcontext+orw 大致可以把2.27,2.29做为两个分界点 2.27下的setcontext 内容如图, 作用是通过rdi寄存器里地址来设置各个寄存器的值。该版本下我们通常从setcontext+53开始利用,因为前面的fldenv byte pte [rcx]会导致程序crash。 值得注意的是,mov rcx,[rdi+0A8h]…