-
-
[原创]PWN学习笔记【堆】【UAF】从实验到原理
-
发表于:
2022-6-15 15:10
21338
-
[原创]PWN学习笔记【堆】【UAF】从实验到原理
开局一段代码:
编译32位:gcc -g -m32 test.c
猜一猜程序会怎么执行?
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
当当当当:

为啥会这样呢
glibc的ptmalloc在管理释放的内存叫bin,申请的堆块叫chunk
其中小chunk内存管理器叫fastbins,使用的是 LIFO的规则,后进先出。所以申请同样大小的小chunk,会使用最后一次free的chunk
执行完free过后,fastbins中存放了刚刚free的指针0x804b000

执行malloc(8)后,看到fastbins中的chunk指针没有了

看下hack_point的地址,确实是刚刚free的地址,此时两个指针指向同一块内存

为啥这两个指针=0x0804b008,而fastbins存的0x0804b000
在32位下chunk的结构:
刚好偏移是8
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2022-6-15 17:29
被洋洋不得意编辑
,原因: 修改描述错误