題組內容

二、請使用兩個函數P和Q劃出堆疊框架(Stack Frame)的架構圖,並藉此說明以下有關堆疊溢位(Stack Overflow)攻擊的相關問題。架構圖應至少需包含以下元素:返回位址(Return Address)、框架指標(Frame Pointer)、被呼叫函數的參數(Parameters)和局部變數(Local Variables)。

(二)請說明如何基於Canary Value 防禦 Stack Overflow攻擊。(13分)

詳解 (共 2 筆)

Aaron Lim
Aaron Lim
詳解 #6385461
2025/04/22
使用Canary值防禦堆疊溢位攻擊 C...
(共 1441 字,隱藏中)
前往觀看
CCC
CCC
詳解 #6784461
2025/09/24
金絲雀Canary 是編譯器在函數堆疊局部變數與 saved EBP/return address 之間插入的保護值,函數返回前檢查 canary 是否被改寫,若改寫則視為堆疊破壞並立即終止程式,避免 return address 被利用。
攻擊者若嘗試覆寫 return address,通常需先越過 canary;若不知道 canary 值,覆寫會破壞 canary,比對失敗導致程式崩潰而非被利用。