2016-12-30 19 views
-1

我想了解緩衝區溢出的基本原理。 在閱讀中我注意到的事情之一了無數的時間爲:C簡單緩衝區溢出Shellcode位置

大部分時間的利用串結構是這樣的,當空指令和shellcode的位於緩衝區溢出之前,第一部分:

[NOPS-SHELLCODE-NEWEIPADDRESS] 

現在我喜歡思考框外,並試圖此,其中的shellcode位於堆棧中的新eipaddress後:

[NOPS-NEWEIPADDRESS-SHELLCODE] 

我在利用這種方式,但真正WO我測試的漏洞成功爲什麼沒有人寫或使用這種例子?這是不好的做法還是我忽略了什麼?

回答

1

我認爲你用來實現緩衝區溢出比第一種方式差的第二種方式。

讓我爲您解釋。

通常,操作系統具有一個稱爲ASLR的安全功能。

簡而言之,您的堆棧地址(緩衝區地址)在每次執行時都會有所不同。

所以你必須猜測緩衝區地址,這就是爲什麼NOP雪橇。

如果您的NEWEIPADRESS落在NOP底座或shellcode的第一個字節內,您的利用成功。

但是,如果您使用第二種方式,則只有當您的NEWEIPADRESS是shellcode的第一個字節時纔會成功。

如果您登陸NOP雪橇,您的NEWEIPADRESS將被解釋爲彙編語言執行。

在大多數情況下,您的NEWEIPADRESS會使您的漏洞利用失敗,期望NEWEIPADRESS都是NOP。