glibc-2.29
概述
这里记录下版本为libc-2.29.so的漏洞利用方式,一是防止遗忘,二是供大家学习。
Tcache Stashing Unlink Attack
攻击原理和细节代码我就不分析了,着重记录下攻击方式和效果,这里利用tcache stashing unlink attack可以实现两种攻击效果:
1、任意位置写入较大值
2、任意地址chunk分配
任意位置写入较大值
首先介绍任意位置写入较大值,经过测试在libc-2.31.so中也可以实现该攻击效果。该漏洞发生在small bin unlink的过程中,由于该版本libc的检查机制,我们需要构造两个small bin块,将第二个small bin(也就是后插入的small bin)的bk指针修改为目标地址-0x10,再利用calloc不会取tcache的特性去取出small bin中的chunk,实现unlink。现将攻击方式总结如下,具体细节见下面的c语言代码:
- 释放6个0x100的chunk到tcache bin中
- 构造两个0x100的small bin(利用Unsorted bin或Large bin切割得到)
- 修改后插入的small bin的bk指针为目标地址-0x10,且保持fd指针不变
- 用calloc分配0x100的chunk
#include <stdio.h>
#include <stdlib.h>
long long bss_data;
int main()