讀書筆記2:0day安全:軟件漏洞分析技術

實驗修改函數返回地址
經過上個筆記的學習,我們瞭解了調用verify_password(char * password)時棧的情況:(注不瞭解函數調用方式的建議先找文章瞭解關鍵字:call的調用方式)
在這裏插入圖片描述
我們都知道,執行完verify_password(char * password)是call指令調用是還會把它的下條指令地址入棧,用於調用完之後返回上層函數繼續執行程序指令:
其實大致方法還是跟修改臨近變量的方法一樣的…就是把我們修改入棧時的返回地址,從而實現控制跳轉…
源碼還是同一份這裏就不貼出來了
我們可以傳入password爲AAAAAAAA(這裏覆改buffer)BBBB(這裏覆蓋authenticated)CCCC(這裏覆蓋入棧的EBP)(最後這裏是我們的返回地址,注意小尾存放(高維數據存放再高位地址中))這裏是我們的要修改的返回地址地址
實驗開始:
我們記下跳出成功通過驗證的指令的地址:0x00401106小威存放則需要我們放入:06114000
在這裏插入圖片描述
因此,我們可以構造password = AAAAAAAABBBBCCCC06114000
在這裏插入圖片描述
這裏之所以跟我們預期不同,是因爲我們輸入的時候系統讀取的轉成ASCII碼了該地址系統取指令出錯了,因此發生了程序崩潰,我們需要的是十六進制的才能跳過去,怎麼操作,我們下篇筆記見吧,哈哈

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