The buffer overflow vulnerability is an anomaly, where, while writing data to the buffer, it overruns the buffer size and overwrites the memory addresses. An elementary example of a buffer overflow is shown in the following diagram:
The left side of the preceding diagram shows what an application looks like. However, the right side denotes the application's behavior when a buffer overflow condition is met.
So, how can we take advantage of buffer overflow vulnerability? The answer is straightforward. If we know the exact amount of data that will overwrite everything just before the start of the EIP (Instruction Pointer), we can put anything in the EIP and control the address of the next instruction to be processed.
Therefore, the first thing is to figure out an exact number of bytes that are good enough to fill everything...