緩衝區溢出實驗

實驗背景:根據以上實例,在 VC6 環境下達到 繞開目的。另外,能不能通過緩衝區溢出 修改PwStatus達到繞開口令驗證的目的? 爲什麼?紀錄過程並編制報告

實驗環境: window XP ,VC++ 6.0

實驗原理:棧上的緩衝區溢出覆蓋了棧中的數據的 時候,會導致棧粉碎(stack smashing)。
本次實驗採用:覆蓋返回地址

實驗代碼截圖
在這裏插入圖片描述
分析棧的狀態,如下圖,我們利用gets()的緩衝區溢出輸入20個字節的口令進行返回地址的破壞

在這裏插入圖片描述在這裏插入圖片描述
通過VC 的反彙編找到我們想要的返回地址:
在這裏插入圖片描述
構造20個字節的密碼
在這裏插入圖片描述
測試,成功獲得權限
在這裏插入圖片描述
是否能修改PWstatues繞開口令?
不能,分析程序棧。若生成24位輸入修改PwStatus,維護函數返回指針,但PwStatues在該函數返回時又做了修改,而函數返回時是存在寄存器裏,故無法通過修改棧實現PwStatues繞開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章