Some attacks are that the program goes to a specific address and continues to work from there. The code you enter must have been downloaded earlier in some way at this exact location.
The randomization of the stack and other differences in runtime can make the address at which the program will jump impossible to predict, so an attacker puts NOP wipes in a large memory range. If the program jumps anywhere in the sled, it will launch all the other NOPs without doing anything, and then run the payload code, next to the sled.
The reason an attacker uses NOP wipes is to make the destination address larger: the code can jump anywhere on the slide, and not exactly at the beginning of the entered code.
A 128-byte NOP sled is just a group of 128-byte wide NOP schemes.
NOTE # 1: NOP (No-OPeration) is an instruction available in most (all?) Architectures that does nothing but occupy memory and some runtime.
NOTE # 2: In architectures with variable-length instructions, the NOP instruction is usually only one byte long, so it can be used as a convenient complement to commands. Unfortunately, this also facilitates the implementation of the NOP sled.
rodrigo Feb 07 '13 at 20:47 2013-02-07 20:47
source share