Welcome to Part I of the Shellcoder's Handbook: Discovering and Exploiting Security Holes . This part is an introduction to vulnerability discovery and exploitation. It is organized in a manner that will allow you to learn exploitation on various fictitious sample code structures created specifically for this book, as well as real-life, in-the-wild, vulnerabilities.
You will learn the details of exploitation under Linux running on an Intel 32-bit (IA32 or x86) processor. The discovery and exploitation of vulnerabilities on Linux/IA32 is the easiest and most straightforward to comprehend. This is why we have chosen to start with Linux/IA32. Linux is easiest to understand from a hacker's point of view, because you have solid, reliable, internal operating system structures to work with when exploiting.
After you have a solid understanding of these concepts and have worked through the example code, you will be graduated to increasingly difficult vulnerability discovery and exploitation scenarios in subsequent parts . We will work through stack buffer overflows in Chapter 2, introductory shellcoding in Chapter 3, format string overflows in Chapter 4, and finally, heap-based buffer overflow hacking techniques for the Linux platform in Chapter 5. Upon completion of this part, you will be well on your way to understanding vulnerability development and exploitation.