Nop Sled,你能解释一下吗?

时间:2015-06-16 15:33:48

标签: stack-overflow buffer-overflow exploit nop

我一直在读这本书:Hacking, the art of exploitation

在第140页,该书解释了Nop Slide:

  

我们将创建这些NOP指令的大型数组(或雪橇)并放置它   在shellcode之前;那么,如果EIP寄存器指向找到的任何地址   NOP雪橇,它会在执行每个NOP指令时递增,一个在   一段时间,直到它最终到达shellcode。这意味着只要   返回地址被NOP底座EIP中的任何地址覆盖   register会将底座滑动到shellcode,这将正确执行。

但是使用这种技术,我们会用0x90覆盖返回地址,不是吗? EIP将转到0x90,导致段错误。 那么,你能清楚地向我解释一下这种技巧吗?谢谢:)

1 个答案:

答案 0 :(得分:0)

不,你不会用NOP雪橇重写返回地址。一旦获得正确的偏移量,就必须使用地址重写返回地址,将某些内容指向NOP指令。而且因为NOP雪橇放在你的shellcode之前,它只会向下滑动并执行你的shellcode。所以60个字节长的NOP雪橇什么都不做。

这是因为(你可以在那本书中找到关于它的一切):

  

NOP是一个汇编指令,是' no operation' 的缩写。它是   一个单字节的指令,绝对没有任何作用。