題組內容
二、請使用兩個函數P和Q劃出堆疊框架(Stack Frame)的架構圖,並藉此說明以下有關堆疊溢位(Stack Overflow)攻擊的相關問題。架構圖應至少需包含以下元素:返回位址(Return Address)、框架指標(Frame Pointer)、被呼叫函數的參數(Parameters)和局部變數(Local Variables)。
(二)請說明如何基於Canary Value 防禦 Stack Overflow攻擊。(13分)
詳解 (共 1 筆)
詳解
金絲雀Canary 是編譯器在函數堆疊局部變數與 saved EBP/return address 之間插入的保護值,函數返回前檢查 canary 是否被改寫,若改寫則視為堆疊破壞並立即終止程式,避免 return address 被利用。
攻擊者若嘗試覆寫 return address,通常需先越過 canary;若不知道 canary 值,覆寫會破壞 canary,比對失敗導致程式崩潰而非被利用。