Most vulnerabilities are flaws that arise due to conditions that the developer hasn't thought of. The most common vulnerability is a stack buffer overflow. This means that we define some sort of buffer that is not large enough for the storage we require. This is more of a problem when the input is controlled by the end-level user because this means it can be exploited.
In software, a stack buffer overflow or stack buffer overrun occurs when a program writes to a memory address on the program's call stack (as we know, every function has its own execution stack or is allocated a stack memory where it is executed) outside the intended data structure, which is usually a fixed-length buffer. A stack buffer overflow almost always results in the corruption of the adjacent data on the stack, and in cases where the overflow was triggered by mistake...