堆溢出 HITCON Trainging lab13

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函数,大概是一个自定义的堆分配器,每个堆主要有两个成员:大小与内容指针

堆溢出 HITCON Trainging lab13_第1张图片

  1. 创建堆,根据用户输入的长度,申请对应内存空间,并利用 read 读取指定长度内容。这里长度没有进行检测,当长度为负数时,会出现任意长度堆溢出的漏洞。当然,前提是可以进行 malloc。此外,这里读取之后并没有设置 NULL。
  2. 编辑堆,根据指定的索引

你可能感兴趣的:(ctf,pwn,信息安全)