CTF-All-In-One/doc/1.5.8_glibc_malloc.md

51 lines
1.4 KiB
Markdown
Raw Normal View History

2017-10-11 17:22:24 +07:00
# 1.5.8 glibc malloc
2018-01-10 16:35:17 +07:00
- [glibc](#glibc)
- [malloc](#malloc)
- [参考资料](#参考资料)
[下载文件](../src/Others/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
```
2018-03-25 21:48:54 +07:00
## malloc.c
2018-01-10 16:35:17 +07:00
下面我们先分析 glibc 2.23 版本的源码,它是 Ubuntu16.04 的默认版本,在 pwn 中也最常见。然后,我们再探讨新版本的 glibc 中所加入的漏洞缓解机制。
2018-03-25 21:48:54 +07:00
## 相关结构
#### 堆块结构
- Allocated Chunk
- Free Chunk
- Top Chunk
#### Bins 结构
- Fast Bins
- Small Bins
- Large Bins
- Unsorted Bins
#### Arena 结构
## 分配函数
`_int_malloc()`
## 释放函数
`_int_free()`
## 重分配函数
`_int_realloc()`
2018-01-10 16:35:17 +07:00
## 参考资料
- [The GNU C Library (glibc)](https://www.gnu.org/software/libc/)
- [glibc manual](https://www.gnu.org/software/libc/manual/)