The exploitation techniques presented in this section are exemplary and they can bypass some of the run-time defensive techniques. While the stack smashing attack can exploit just a single vulnerable strcpy(), these techniques usually require more vulnerabilities in the program that are less likely to be found in real world. Nonetheless, they identify different kinds of vulnerabilities that may not be protected by current defensive techniques.
Although we can apply multiple defensive techniques for added protection, these exploitation techniques can also be used in tandem to produce more sophisticated attacks that are more difficult to detect. However, none of these exploits are possible if buffer overflow is prevented. If programmers rely on C library functions to overflow buffers, then our current implementation can detect and prevent such attacks.