實驗背景:根據以上實例,在 VC6 環境下達到 繞開目的。另外,能不能通過緩衝區溢出 修改PwStatus達到繞開口令驗證的目的? 爲什麼?紀錄過程並編制報告
實驗環境: window XP ,VC++ 6.0
實驗原理:棧上的緩衝區溢出覆蓋了棧中的數據的 時候,會導致棧粉碎(stack smashing)。
本次實驗採用:覆蓋返回地址
實驗代碼截圖:
分析棧的狀態,如下圖,我們利用gets()的緩衝區溢出輸入20個字節的口令進行返回地址的破壞
通過VC 的反彙編找到我們想要的返回地址:
構造20個字節的密碼
測試,成功獲得權限
是否能修改PWstatues繞開口令?
不能,分析程序棧。若生成24位輸入修改PwStatus,維護函數返回指針,但PwStatues在該函數返回時又做了修改,而函數返回時是存在寄存器裏,故無法通過修改棧實現PwStatues繞開。