This document provides an overview of buffer overflow attacks and defenses. It discusses stack and heap overflows, and how programs can be exploited by overwriting memory buffers. It then summarizes various protection solutions, including Libsafe and the Grsecurity kernel patch, which make the stack and heap non-executable to prevent execution of injected code. The document serves as an introduction to buffer overflows and techniques for mitigating these vulnerabilities.