fastbin attack

type
status
date
slug
tags
summary
category
icon
password

glibc 2.23

fastbin_dup

首先看代码:
notion image
可以看一下三次fastbin后的结果:
notion image
一个top chunk和三个chunk
 
free a → b → a以后:
notion image
这里得慢慢学着直接看内存
notion image
free第一个a时,内存没有改变,但fastbins的链子加入了a的地址:
notion image
free a→ b→ a后,虽然已经加入bins,但prev_inuse位并没有被清除
notion image
注意,前面的0x20代表的是大小(fastbins最小为32bytes,需要16bytes的元数据)
notion image
结合源码看看:
check_inuse_chunk(av, p); 对应这里的 prev_inuse (p);
#define prev_inuse(p) ((p)->size & PREV_INUSE)
即,这里只检查了prev_inuse位,但没有在free后将prev_inuse置空
再malloc a b c,实则没变,abc从bins里面获取了,即a、c申请到的地址相同
notion image
notion image
 

fastbin 实现地址写

注意会有check,不能乱写
notion image
进源码看到这里,这里是对于bins的组织方式,可以计算得出0x7f在0x70的链中,而.plt.got中又有较多0x7f,便于构造(注意:堆块大小并不是输入malloc的大小,要加上两个指针大小)
上一篇
unsorted bin attack
下一篇
house of spirit
Loading...
文章列表
Hi~, I ‘m moyao
reverse
pwn
pentest
iot
android
others
ctf
iOS