堆溢出是因程序向堆块写入数据超过其容量,导致覆盖相邻内存,破坏堆管理结构,进而可能实现任意代码执行。常见原因包括不安全函数使用、整数溢出及内存管理错误。攻击者可通过覆盖chunk头、利用unlink机制或Fastbin/Tcache poisoning等技术,实现任意地址写入,最终劫持程序执行流,如修改GOT表或调用system获取shell。现代glibc引入Safe Unlinking防御,但