chunk-extend学习,一个友好的题目,下载地址
0x00 程序分析
基本信息
[*] '/home/ububtu/ctf/pwn/heapcreator'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE (0x400000)
64位elf,开启了Canary和NX保护
分析main函数,大概是一个自定义的堆分配器,每个堆主要有两个成员:大小与内容指针
- 创建堆,根据用户输入的长度,申请对应内存空间,并利用 read 读取指定长度内容。这里长度没有进行检测,当长度为负数时,会出现任意长度堆溢出的漏洞。当然,前提是可以进行 malloc。此外,这里读取之后并没有设置 NULL。
- 编辑堆,根据指定的索引以及之前存储的堆的大小读取指定内容,但是这里读入的长度会比之前大 1,所以会存在 o