阿摩線上測驗 登入

申論題資訊

試卷:113年 - 113 教育部公費留學考試試題:資訊安全概論#125716
科目:研究所、轉學考(插大)◆資訊安全概論
年份:113年
排序:0

題組內容

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

申論題內容

 (一)請說明如何利用 Stack Overflow 取得 Shell。(12分)

詳解 (共 1 筆)

詳解 提供者:CCC

利用把超長資料寫入函數的局部 buffer,使溢位資料覆寫堆疊上的 saved EBP 或 return address,將控制流程導向攻擊者指定之程式碼(早期為 shellcode;現代常用 ROP),達成執行系統命令/啟動 shell 的目的。

步驟要點(概念層次)

  1. 漏洞定位:函數內有不安全的緩衝寫入(如 strcpy, gets, 未檢查長度的 memcpy 等),可向下覆寫鄰近堆疊資料。

  2. 覆寫目標:攻擊者將輸入填滿局部 buffer,進而覆寫 canary(若無防護)、saved EBP、最重要的 return address。

  3. 控制流程:把 return address 改為攻擊者選擇的地址,使函數回傳時跳到該地址執行。早期常把可執行的 shellcode 放在堆疊(stack-smashing + shellcode),現代環境(有 NX/DEP)常用 ROP(Return-Oriented Programming):串接程式內現有的 short gadgets 以執行系統呼叫(execve/execv)或改變記憶體保護後跳至 shellcode。

  4. 取得 shell:成功執行 execve("/bin/sh", ...) 或等效動作,即可取得交互式 shell 或執行任意命令。