This chapter discusses various factors you may need to consider when designing or selecting a payload for your exploits. The following topics are covered:
• User space shellcode
• Other shellcode considerations
• Kernel space shellcode
In Chapters 11 and 12, you were introduced to the idea of shellcode and shown how it is used in the process of exploiting a vulnerable computer program. Reliable shellcode is at the heart of virtually every exploit that results in “arbitrary code execution,” a phrase used to indicate that a malicious user can cause a vulnerable program to execute instructions provided by the user rather than the program. In a nutshell, shell-code is the arbitrary code that is being referred to in ...