hitcon2017 ghost_in_the_heap writeup

hitcon的题果然不是那么简单的…….简直把堆玩出花了

首先看完题目,我就感觉肯定是用unsorted bin attack攻击stdin file struct的了,但是怎么攻击呢?

首先肯定要leak出libc地址

这个比较容易leak,直接用ghost就可以leak出来

然后呢?

目测是用off by one来构造overlap chunk

但是之前一直用的那种办法,在这里用不上,因为控制不了malloc的chunk的size

然后我就不会了……..去看题解

果然是那个方法get shell,但是前面还有好多东西

首先是要leak heap地址,这里我想了好久也不会

发现它是利用malloc_consolidate来将fastbin 转化为unsorted bin

然后通过malloc free使得两个unsorted bin相隔着,这样就有heap地址,用ghost来leak heap地址

之后呢?

看了下exp,发现是用unlink来将两个合并起来,中间就能控制一个unsorted bin,进而进行攻击了

这里附上 exp