1. 程式人生 > 其它 >緩衝區溢位實踐

緩衝區溢位實踐

緩衝區溢位實踐

20191331lyx

一、實驗環境

實驗樓 https://www.lanqiao.cn/courses/231

二、實驗準備

關閉記憶體地址空間隨機化

三、開始實踐

進入32位linux環境

本次實驗的shellcode

編寫漏洞程式

關閉gcc編譯保護

精確定位esp暫存器位置

在程式碼中插入esp暫存器地址

進行緩衝區溢位攻擊

實驗驗證原理

  • 緩衝區溢位:緩衝區溢位是一種常見且危害很大的系統攻擊手段,通過向程式的緩衝區寫入超出其長度的內容,造成緩衝區的溢位,從而破壞程式的堆疊,使程式轉而執行其他的指令,以達到攻擊的目的。

  • C語言程式設計中,一些不作邊界檢查的字串拷貝函式(如strcpy)容易造成緩衝區溢位。

常見的緩衝區溢位防禦手段

  • 基於探測方法(canary)的防禦。這包括 StackGuard(由 Immunix 所使用)、ProPolice(由 OpenBSD 所使用)和 Microsoft 的 /GS 選項。

  • 非執行的堆疊防禦。這包括 Solar Designer 的 non-exec 補丁(由 OpenWall 所使用)和 exec shield(由 Red Hat/Fedora 所使用)。

  • 包括 libsafe(由 Mandrake 所使用)和堆疊分割方法。