realloc_hook 调整栈帧
type
status
date
slug
tags
summary
category
icon
password
有时候会遇到one-gadget对栈要求无法满足的情况
需要合法指针:
那么在堆的仅一次跳转中需要想办法布置栈
realloc
realloc 在库函数中的作用是重新调整 malloc 或 calloc 所分配的堆大小。首先看realloc源码,同样存在 hook 函数,如果有hook函数那么直接执行hook函数并返回
同样, malloc 也有hook方法:
更好的一点是,malloc hook和realloc hook的地址往往相邻,更更好的一点是,前面只有一个memalign_hook,意味着大概率出现仅有低位0x7f的4bytes来方便构造可写字节
如果能做到泄露libc基址,并且实现地址写,连续控制该两个hook函数的行为,就能实现一条链子
同时由于realloc在执行hook前有多个push操作,可以借助这些push来控制栈
注意这里:
尝试打印,发现这里的第二第三个均不是合法的指针(需要传递一个指针数组),正常运行会返回-14 EFAULT错误码:
所以需要调整可以进行多次尝试,找到一个恰好NULL指针开头的位置做跳转
上一篇
字符串混淆去除
下一篇
llvm开发学习笔记
Loading...