Tcache Attack中的Tcache Poisoning(基础)
Tcache Attack中的Tcache Poisoning(基础)
附件下载:
链接:https://pan.baidu.com/s/1cCflSuwhgQoiiGzjcoZuBA
提取码:2g1k
–来自百度网盘超级会员V3的分享
原理
tcache poisoning的基本原理是覆盖tcache chunk的next域(tcachebin的链表指针是指向下一个chunk的fd字段,fastbin的链表指针式指向下一个chunk的pre_size字段)为目标地址,通过maloc来控制任意地址。这种攻击手法不需要伪造任何的chunk块。
Demo
源码test.c:
1 | //gcc -g -fno-stack-protector -z execstack -no-pie -z norelro test.c -o test |
编译命令:
1 | gcc -g -fon-stack-protector -z execstack -no-pie -z norelro test.c -o test |
pwngdb调试
在第23行下断点,执行程序,此时程序已经释放了两个chunk,看一下堆内存:
可以看见正好对应了tcache bin中的链表结构。
然后就是修改tcache的next指针(这一步骤是攻击方式的核心)
在代码第26行下断,执行程序,观察堆的情况:
可以看到此时已经被修改为0x6012f0->0x7fffffffdec0(要控制的地址,在这个例子中就是&stack_var)
最后再执行两次malloc就会控制想要控制的地址:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 zhuyuan-学习日记!