mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-24 19:21:15 +07:00
51 lines
1.4 KiB
Markdown
51 lines
1.4 KiB
Markdown
# 1.5.8 glibc malloc
|
||
|
||
- [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
|
||
```
|
||
|
||
|
||
## 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()`
|
||
|
||
|
||
## 参考资料
|
||
- [The GNU C Library (glibc)](https://www.gnu.org/software/libc/)
|
||
- [glibc manual](https://www.gnu.org/software/libc/manual/)
|