CTF-All-In-One/doc/1.5.8_glibc_malloc.md
firmianay f6656821eb fix
2018-04-29 22:21:55 +08:00

1.4 KiB
Raw Blame History

1.5.8 glibc malloc

下载文件

glibc

glibc 即 GNU C Library是为 GNU 操作系统开发的一个 C 标准库。glibc 主要由两部分组成,一部分是头文件,位于 /usr/include;另一部分是库的二进制文件。二进制文件部分主要是 C 语言标准库,有动态和静态两个版本,动态版本位于 /lib/libc.so.6,静态版本位于 /usr/lib/libc.a

这一章中,我们将阅读分析 glibc 的源码,下面先把它下载下来,并切换到我们需要的版本:

$ git clone git://sourceware.org/git/glibc.git
$ cd glibc
$ git checkout --track -b local_glibc-2.23 origin/release/2.23/master

malloc.c

下面我们先分析 glibc 2.23 版本的源码,它是 Ubuntu16.04 的默认版本,在 pwn 中也最常见。然后,我们再探讨新版本的 glibc 中所加入的漏洞缓解机制。

相关结构

堆块结构

  • Allocated Chunk
  • Free Chunk
  • Top Chunk

Bins 结构

  • Fast Bins
  • Small Bins
  • Large Bins
  • Unsorted Bins

Arena 结构

分配函数

_int_malloc()

释放函数

_int_free()

重分配函数

_int_realloc()

参考资料