文章预览
本题主要介绍realloc函数,平时我们使用realloc最多便是在打malloc_hook-->onegadget的时候,使用realloc_hook调整onegadget的栈帧,从而getshell。 在realloc函数中,也能像malloc一样创建堆,并且比malloc麻烦一些,但是倒是挺有趣的 realloc realloc(realloc_ptr, size)有两个参数,并且在特定参数有特定效果 1. size == 0 ,这个时候等同于free。也就是 free(realloc_ptr) ,并且返回空指针。即没有uaf 2. realloc_ptr == 0 & & size > 0 , 这个时候等同于malloc,即 malloc(size) 3. malloc_usable_size(realloc_ptr) >= size , 这个时候等同于edit 4. malloc_usable_size(realloc_ptr) < szie , 这个时候才是malloc一块更大的内存,将原来的内容复制过去,再将原来的chunk给free掉 stdout泄露 这里我只给出结论,具体可以 参考 1. 设置 _flags & _IO_NO_WRITES = 0 2. 设置 _flags & _IO_CURRENTLY_PUTTING = 1 3. 设置 _flags & _IO_IS_APPENDIN
………………………………