前言这道题考察的是堆溢出在高版本的libc的利用方式,在高版本的libc中引入了tcache机制
tcache是libc2.26之后引进的一种新机制,类似于fastbin一样的东西,每条链上最多可以有 7 个 chunk,free的时候当tcache满了才放入fastbin,unsorted bin,malloc的时候优先去tcache找到对应大小的chunk.
漏洞分析在merge这个功能中,当分配的堆块占用了下一chunk的pre_size位时,strcpy的时候会将下一chunk的size也复制,再配合strcat会溢出一个字节,merge部分函数代码如下
123456789...