1. 程式人生 > >0day 第10章 --棧中的保護機制:GS

0day 第10章 --棧中的保護機制:GS

文章目錄

實驗環境:

winxp sp3 、vs2010

實驗要求:

vs編譯時要求禁用優化、release版本

GS的保護原理

看圖就明白了
在這裡插入圖片描述
在這裡插入圖片描述

在vs2010中可通過以下選項選擇是否開啟GS,預設開啟:
在這裡插入圖片描述

GS保護的侷限性:

(1) 函式不包含緩衝區

(2) 函式被定義為具有變數引數列表

(3) 函式使用無保護的關鍵字標記

(4) 函式在第一個語句中包含內嵌彙編程式碼

(5)緩衝區不是8位元組型別且大小小於等於4個位元組

針對(3)和(5)進行說明:

(3)通過新增 #pragma strict_gs_check(on) 可以對任意型別的函式新增Security Cookie,如:
在這裡插入圖片描述

(5)對上述不加關鍵字保護的程式進行編譯執行,會出現記憶體訪問衝突。其中0x75662065是“e fu”經過ASCII碼轉換後的值,說明返回地址已經被字串覆蓋了!
在這裡插入圖片描述
用IDA載入,觀察到vulfunction函式在返回前果然沒有Security Cookie
在這裡插入圖片描述
如果添加了關鍵字保護,編譯執行直接彈出“緩衝區溢位”的框框
在這裡插入圖片描述
用IDA載入,觀察到vulfunction函式在返回前添加了Security Cookie


在這裡插入圖片描述