fastbin attack攻击中关于 malloc__hook
概述
在程序中设置钩子,用来在malloc,,对其进行检查,可以看到对应的函数调用后的地址是什么。
malloc__hook 也位于libc中的data段
它是一个地址
当调用 malloc 的时候 它会发生跳转到malloc__hook 所指向的地址
当我们把malloc__hook 所指向的地址 改为 system(“bin/sh”)
再次调用 malloc 的时候 就会发生跳转到 system() 处
操作
上述前提是获取 malloc__hook 的地址
有一个固定的偏移 (libc2.23 // ubuntu16): main_arena+0x58 = unsortbin表头的地址
接着获取malloc__hook的地址: main_arena - 0x10 = malloc__hook
即 malloc__hook=unsortbin表头地址-0x58-0x10
第二种方法:这里还有一个固定结论 偏移0x3c4b78
**
libc_base=(程序里的main_arena+88)-0x3c4b78(0x3c4b0+88,一般2.23_64的偏移都是这个,不同libc版本会有不同)
**
show(1) libc_base = u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00')) -0x3c4b78 malloc_hook = libc_base + libc.symbols['__malloc_hook']主线程的arnea称为“main_arena”。子线程的arnea称为“thread_arena”。
这里需要我们先获取unsortbin的地址
即 unsortbin attack (leak libc)
主要是利用堆溢出的原理
步骤过程如下
这是chunk的结构组成部分
大致过程是这样的
prev-size 站位大小是8
总结
以上是生活随笔为你收集整理的fastbin attack攻击中关于 malloc__hook的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: <力扣>-----利用哈希表来判断是否存
- 下一篇: BUUCTF(pwn)jarvisoj_