CHAPTER 16Buffer/Stack Overflow
In the previous chapter, you learned about the assembly instructions. After that, you saw how to use Immunity Debugger to visualize the internal instructions of a program (aka reverse engineering). This chapter will use what you have learned previously to exploit the stack using the buffer overflow technique. Before starting, you should already understand the basics of the assembly language instructions and should have practiced the examples in the previous chapter.
The topics that you will learn about in this chapter include the following:
- Basics of the stack
- How to exploit the stack
- The workflow to achieve a buffer overflow
Basics of Stack Overflow
Now that you understand reverse engineering fundamentals, it’s time to start with something more meaningful to exploitation. In this section, we will see how to smash the stack with our hacking skills. We will outsmart the CPU and the regular stack manipulation to achieve our exploitation goals.
Stack Overview
Long story short, a stack is used to allocate short‐term storage for function parameters and local variables of that function. It’s important to know that a new stack is created every time we run a function. The size of the stack frame is fixed after the creation using the prologue instructions, and the stack frame is deleted at the end of the function (see Figure 16.1).