緩衝區溢出原理學習及實驗

緩衝區溢出原理

通俗點說,就是用戶輸入超出程序的預計,但是程序還是把它存了起來,超出的部分會覆蓋掉下一步要執行的命令地址,如果精確操作,就可以通過輸入來控制程序下一步執行的指令集,即執行我們的程序。

在這裏插入圖片描述

call指令的意思是調用某一個函數

返回地址:在執行某一命令前,將下一個要執行的地址入棧,執行完命令,馬上開始執行返回地址

main中使用strcp函數,將全局變量名字拷貝給strbuffer,8個字節

觀察正常程序

全局變量沒有大於strbuffer,拷貝正常
strcp執行完後,由於一切正常,執行返回地址,程序正常結束

觀察溢出程序

全局變量大於strbuffer,執行拷貝後意外覆蓋了返回地址
使得返回地址是無效值,
執行完畢,當程序執行返回地址的時候,發現無效,報錯

利用方式

假設我們覆蓋的是一個有效的返回地址
在該地址處又包含着有效的指令
系統就會執行
我們可以構造有效地址,將我們想要系統執行的代碼寫入到這個地址

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