緩衝區溢位實踐
阿新 • • 發佈:2021-11-01
緩衝區溢位實踐
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 所使用)和堆疊分割方法。