999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

棧溢出攻擊原理淺析

2016-11-26 05:19:30
網(wǎng)絡(luò)安全和信息化 2016年5期

引言:棧溢出攻擊是通過構(gòu)造特殊的代碼來達(dá)到溢出攻擊的一種攻擊方式,可以造成系統(tǒng)異常甚至獲取計算機權(quán)限等危害。本文通過對棧的結(jié)構(gòu)分析,探討了棧溢出的形成原理及防范辦法,是提高軟件的安全性、網(wǎng)絡(luò)的安全性的一個重要部分。

程序在開發(fā)過程中,出現(xiàn)溢出錯誤是正常現(xiàn)象,也是一種較嚴(yán)重的程序錯誤,因為溢出錯誤不僅僅會造成程序的異常、丟失數(shù)據(jù)等問題,嚴(yán)重時還會造成操作系統(tǒng)的異常甚至崩潰。

棧結(jié)構(gòu)及形成過程

程序在運行過程中,進(jìn)程會被加載到內(nèi)存的不同區(qū)域中執(zhí)行,而按功能劃分,進(jìn)程所使用的內(nèi)存空間可以分成四類:1.數(shù)據(jù)區(qū),用來存儲全局變量、常量等;2.棧區(qū),用來存儲函數(shù)間的調(diào)用關(guān)系,從而保證函數(shù)調(diào)用結(jié)束后,返回到調(diào)用點繼續(xù)向下執(zhí)行;3.堆區(qū),是系統(tǒng)動態(tài)分配和回收的一段特殊內(nèi)存空間,進(jìn)程可以動態(tài)地申請,作為緩沖區(qū)來使用,使用完成后,按照不同的堆算法回收;4.代碼區(qū),用于存儲程序執(zhí)行過程中的機器指令,CPU會按照程序執(zhí)行流程逐條取出后依次執(zhí)行。

上述四類內(nèi)存空間中,棧區(qū)是由操作系統(tǒng)自動維護的,這是保證函數(shù)調(diào)用的基礎(chǔ),也是簡化程序設(shè)計的難度和降低程序的復(fù)雜度。一般來說,棧的絕大多數(shù)操作,如PUSH、POP等,對于C語言等高級設(shè)計語言來說都是透明的,操作系統(tǒng)都有豐富、完善的函數(shù)、接口等供程序員直接調(diào)用。同一個文件的不同函數(shù)的代碼在內(nèi)存代碼區(qū)中的分布的先后順序也不固定,一般是根據(jù)一定的內(nèi)存分配算法來隨機分配的。

當(dāng)CPU在執(zhí)行到調(diào)用function_A函數(shù)時,會從代碼區(qū)中的main方法所在的區(qū)域跳轉(zhuǎn)到function_A函數(shù)對應(yīng)的代碼區(qū),并從那里取得指令繼續(xù)執(zhí)行。當(dāng)function_A函數(shù)執(zhí)行完后需要返回時,又會跳轉(zhuǎn)到main方法對應(yīng)的指令區(qū)域并繼續(xù)向下執(zhí)行。上述代碼區(qū)中的跳轉(zhuǎn)都是通過棧來實現(xiàn)的,當(dāng)函數(shù)調(diào)用發(fā)生時,棧區(qū)會為每個函數(shù)開辟一個新的棧,并把函數(shù)的相關(guān)的各寄存器信息等壓入棧中,同時該棧在內(nèi)存中會以獨占方式存在,正常情況下,其它函數(shù)不會訪問到它的。當(dāng)函數(shù)調(diào)用完成后,棧中的數(shù)據(jù)也會被依次POP,恢復(fù)到調(diào)用函數(shù)前的各寄存器數(shù)據(jù),代碼繼續(xù)向下執(zhí)行。

棧溢出的原理

正常情況下,代碼區(qū)中的跳轉(zhuǎn)都是通過棧區(qū)來完成的,當(dāng)函數(shù)調(diào)用發(fā)生時,棧區(qū)會為函數(shù)開辟一個新的棧區(qū)單元,并將相關(guān)數(shù)據(jù)PUSH后,這一內(nèi)存區(qū)域理論上是獨占屬性,不會再被分配或占用,只有當(dāng)函數(shù)返回時,棧里數(shù)據(jù)全部POP后才會調(diào)用相應(yīng)的回收機制回收內(nèi)存后再分配。

以C語言為例,其函數(shù)調(diào)用時,Main函數(shù)調(diào)用function_A函數(shù)后,會在系統(tǒng)分配的棧區(qū)中PUSH相關(guān)的數(shù)據(jù),而當(dāng)Function_A調(diào)用Function_B時,同樣會先把自己的棧區(qū)單元壓入函數(shù)返回地址,然后為Function_B創(chuàng)建新的棧區(qū)單元并壓入棧區(qū)。在Function_B返回時,F(xiàn)unction_B的棧區(qū)單元被彈出棧區(qū),而Function_A棧區(qū)單元中的返回地址則會位于棧頂,而此時程序會繼續(xù)跳轉(zhuǎn)到Function_A代碼區(qū)中執(zhí)行。在Runction_A返回時,其棧區(qū)單元彈出棧區(qū),main方法棧區(qū)單元中的返回地址位于棧頂,此時CPU則會按這個地址跳轉(zhuǎn),回到main方法中繼續(xù)向下執(zhí)行。也就是說,每個函數(shù)獨占自己的棧區(qū)單元空間,當(dāng)前運行的函數(shù)的棧區(qū)單元總是位于棧頂,而棧頂?shù)膯卧刂罚ǔR彩怯蒀PU的ESP和EBP兩個寄存器來標(biāo)識,其中ESP為指針寄存器,而EBP則為基址指針寄存器,共同來指向棧區(qū)的頂部單元。

棧區(qū)中,一般會包含幾類較重要的信息,包括局部變量、狀態(tài)值、返回地址,函數(shù)調(diào)用的相關(guān)指令,一般如下:

上面代碼部分,包括了函數(shù)調(diào)用的幾個基本步驟:

1.參數(shù)入棧。

2.返回地址入棧:將當(dāng)前代碼區(qū)調(diào)用的指令下一條地址入棧,供函數(shù)返回時繼續(xù)執(zhí)行。

3.代碼區(qū)跳轉(zhuǎn):CPU從當(dāng)前代碼區(qū)跳轉(zhuǎn)到被調(diào)用函數(shù)入口地址處。

4.棧區(qū)單元調(diào)整,包括了保存當(dāng)前棧區(qū)單元狀態(tài)值,EBP入棧后,當(dāng)前棧區(qū)單元切換到新棧區(qū)單元,將ESP值裝入EBP,更新棧區(qū)單元底部,給新棧區(qū)單元分配空間,將ESP減去所需要的空間大小。

棧溢出攻擊分析

棧溢出的基本思路是人為構(gòu)造代碼數(shù)據(jù),覆蓋函數(shù)的返回地址,從而改變程序的執(zhí)行流程,其難點在于如何準(zhǔn)確定位,并構(gòu)造一段數(shù)據(jù)代碼,恰好覆蓋返回地址,而又不造成程序的執(zhí)行錯誤。

棧溢出的防范

除了上述構(gòu)造特殊的入口地址達(dá)到棧溢出的效果以外,局部靜態(tài)變量過大也比較常見。對棧溢出原理清楚以后,解決辦法主要有兩種:

1.增加棧內(nèi)在的數(shù)目,增加辦法相對較簡單,不同的編譯器都有類似的設(shè)置,但這種辦法也容易造成一些不可預(yù)計的問題,例如影響穩(wěn)定性、數(shù)據(jù)庫ADO連接異常等。

2.使用堆內(nèi)存,這也是得到多數(shù)程序員認(rèn)可的可行性較高的辦法,實現(xiàn)手段也有多種,如可以把數(shù)組的定義改為指針,然后申請動態(tài)內(nèi)存,也可以把局部變量設(shè)置成全局變量或靜態(tài)變量,當(dāng)然定義一個大數(shù)組,有時能更好的解決棧溢出問題。

主站蜘蛛池模板: 国产精品刺激对白在线| 国产极品美女在线观看| 好久久免费视频高清| AⅤ色综合久久天堂AV色综合| 午夜啪啪网| 九九久久精品免费观看| 熟妇无码人妻| 麻豆国产在线观看一区二区| 亚洲天堂视频网站| 91香蕉视频下载网站| 狠狠色婷婷丁香综合久久韩国| 中文字幕久久精品波多野结| 国产制服丝袜91在线| 亚洲三级视频在线观看| 日韩精品一区二区三区中文无码| 日韩色图区| 日韩精品一区二区三区免费在线观看| 成人在线天堂| 亚洲电影天堂在线国语对白| 国产幂在线无码精品| 欧美日韩北条麻妃一区二区| 综1合AV在线播放| 啪啪国产视频| 在线免费观看AV| 日韩毛片免费| 91小视频在线观看| 国产对白刺激真实精品91| 欧美日韩中文国产| 在线看国产精品| 亚洲无码精品在线播放| 国产成人AV大片大片在线播放 | 亚洲综合天堂网| 国产亚洲成AⅤ人片在线观看| 亚洲伦理一区二区| 亚洲欧美另类专区| 男人天堂伊人网| 亚洲欧洲免费视频| 538精品在线观看| 波多野结衣爽到高潮漏水大喷| 激情综合激情| 欧美影院久久| 亚欧美国产综合| 色悠久久综合| 在线观看精品国产入口| 国产成人一区免费观看| 大学生久久香蕉国产线观看| 国产成人精品男人的天堂下载 | 日韩第一页在线| 五月综合色婷婷| 91丝袜美腿高跟国产极品老师| 国产一级片网址| 18禁黄无遮挡网站| 国产视频自拍一区| 一级片免费网站| 久久婷婷五月综合97色| 另类专区亚洲| 久久精品国产免费观看频道| 毛片国产精品完整版| 就去吻亚洲精品国产欧美| 亚洲国产精品不卡在线| 好紧好深好大乳无码中文字幕| 国产成人高清精品免费5388| 久久五月视频| 91网址在线播放| 欧美日韩激情在线| 成人韩免费网站| 伊人成人在线| 美女内射视频WWW网站午夜| 午夜国产小视频| 中文字幕日韩欧美| 国产精品13页| 久久精品国产999大香线焦| 亚洲精品另类| 国产毛片高清一级国语| 亚洲伊人天堂| 91精品国产情侣高潮露脸| 成人毛片免费在线观看| 国产精品毛片一区视频播| 亚洲国产系列| 国产男女XX00免费观看| 成年午夜精品久久精品| 国产浮力第一页永久地址|