A NOP sled (also known as a NOP slide) is a long sequence of instructions preceding shellcode, as shown in Figure 19-3. NOP sleds are not required to be present with shellcode, but they are often included as part of an exploit to increase the likelihood of the exploit succeeding. Shellcode authors can do this by creating a large NOP sled immediately preceding the shellcode. As long as execution is directed somewhere within the NOP sled, the shellcode will eventually run.
Traditional NOP sleds are made up of long sequences of the NOP (0x90) instruction, but exploit authors can be creative in order to avoid detection. Other
popular opcodes are in the 0x40 to 0x4f range. These opcodes are single-byte instructions that increment or decrement the
general-purpose registers. This opcode byte range also consists of only printable ASCII characters. This is often
useful because the NOP sled executes before the decoder runs, so it must pass the same filtering
requirements as the rest of the shellcode.