吳雪陽 樊龍 陳晶波
中國人民解放軍78046部隊 四川 610011
近二十年來,緩沖區溢出漏洞已成為計算機系統安全漏洞的主要形式之一,利用緩沖區溢出漏洞進行的攻擊占了遠程網絡攻擊的絕大多數,這種攻擊可以使一個匿名網絡用戶有機會獲得一臺主機的部分或全部控制權,可以使蠕蟲病毒進行迅速高效的傳播,是一種極其嚴重的安全威脅。
緩沖區溢出攻擊之所以成為一種常見的安全攻擊手段,主要原因在于,存在緩沖區溢出漏洞的系統和軟件非常普遍,且一旦漏洞被成功利用,被攻擊者植入的攻擊代碼將獲得與目標程序相同的系統權限,從而得到被攻擊主機的控制權。
各函數的棧幀大小隨著函數中局部變量的不同而不等。
(2)進程對內存的動態申請發生在Heap(堆)里,隨著系統動態分配給進程的內存數量的增加,Heap(堆)有可能向高址或低址延伸,取決于不同系統的實現,通常是向內存的高址方向增長。

圖1 進程在內存中的映像
假設有一個程序,它的函數調用順序如下:
main(...) -> func_1(...) -> func_2(...) -> func_3(...)
即:主函數main調用函數func_1;func_1調用func_2;func_2調用func_3。當程序被操作系統調入內存運行,其對應的進程在內存中的映像如圖1所示。
需要說明的是:
(1)隨著進程中函數調用層數的增加,函數棧幀是逐塊向內存低址方向延伸的;隨著函數調用層數的減少,各函數調用的返回,棧幀會逐塊被釋放而向內存的高址方向回縮,
(3)當BSS數據或Stack(棧)的增長耗盡了系統分配給進程的自由內存時,進程將會被阻塞,重新被操作系統使用更大的內存模塊來調度運行。
(4)非初始化數據(BSS)區用于存放程序的靜態變量,這部分內存都被初始化為零;初始化數據區用于存放可執行文件里的初始化數據。這兩個區統稱為數據區。
(5)Text(文本區)是個只讀區,任何嘗試對該區的寫操作都將導致段違法出錯,文本區被多個運行該可執行文件的進程所共享,用于存放程序的代碼。
函數調用時建立的棧幀包含了下面的信息:
(1)函數的返回地址:返回地址是存放在父函數的棧幀還是子函數的棧幀里,取決于不同系統的實現,Windows系統是放在父函數的棧幀里;
(2)調用函數的棧幀信息,即棧頂和棧底;
(3)為函數的局部變量分配的空間;
(4)為被調用函數的參數分配的空間。
從函數的棧幀結構可以看出:函數局部變量的內存分配發生在棧幀里,如果在某個函數里定義了緩沖區變量,則這個緩沖區變量所占用的內存空間就在該函數被調用時所建立的棧幀里。由于對緩沖區的潛在操作(如字串的復制)都是從內存低址到高址,而內存中函數調用的返回地址就在該緩沖區的上方(高地址)——這是由棧的特性決定的,這就為覆蓋函數的返回地址提供了條件。當有機會用大于目標緩沖區的內容來向緩沖區進行填充時,就有可能改寫保存在函數棧幀中的返回地址,使程序的執行流程發生轉移,進而執行預先準備好的代碼。下面是緩沖區溢出的示例:
(1)函數對字符串緩沖區的操作,方向一般都是從內存低址向高址的,如:strcpy(s,"AAA.....")。

(2)函數返回地址的復蓋。


注:字符A的十六進制ASCII碼值為0x41。
(3)從上圖可以看出:如果用進程可以訪問的某個地址,而不是 0x41414141來改寫調用函數的返回地址,且該地址正好是準備好的代碼的入口,則進程就會執行這些代碼。在Windows操作系統中,由于有地址沖突檢測機制,出錯時能調試查看寄存器映像和堆棧映像,使得對緩沖區溢出漏洞可以進行精確的分析,確定溢出偏移地址,也便于攻擊者尋找緩沖區溢出漏洞。
假設已經準備好了溢出后執行的基本shellcode代碼,針對Windows系統緩沖區溢出的特殊性,還須解決如下問題:
(1)正確構造溢出字符串
前面已指出,隨著進程中函數調用層數的減少,棧幀會逐塊被釋放而向內存的高址方向回縮。在Windows系統中,系統會用隨機數據填充廢棄不用的堆棧空間,因此必須用下面的方式精確構造溢出字符串,確保溢出后的shellcode不會被隨機數據覆蓋:
…NNNNNNNNNNNASSSSSSSSS…
其中,N為NOP指令,用于溢出占位;A為跳轉指令,使執行流程跳轉到shellcode,后面會分析確定A的具體內容;S為shellcode代碼。在緩沖區溢出發生之后,堆棧的布局如下:

即A覆蓋了返回地址,S位于父函數棧幀的頂部,A的內容,就是指向S的調用。后面會分析如何準確設置A的具體內容。
我們知道,Windows系統的用戶進程空間是0—2G,操作系統所占的是 2—4G,用戶進程的加載位置為:0x00400000。用戶進程的所有指令地址、數據地址和堆棧指針都會含有 主站蜘蛛池模板: 亚洲精品国产乱码不卡| 99久久国产综合精品女同| 欧美v在线| 亚洲成综合人影院在院播放| 国产一区亚洲一区| 久久不卡精品| 免费中文字幕一级毛片| 国产高清免费午夜在线视频| 国产亚洲一区二区三区在线| 呦系列视频一区二区三区| 一级全免费视频播放| 99在线视频精品| 成人一级黄色毛片| 手机在线看片不卡中文字幕| 精品91视频| 国产一级α片| 亚洲第一福利视频导航| 国产成人盗摄精品| 91久久夜色精品| 亚洲色图综合在线| аⅴ资源中文在线天堂| 国产主播喷水| 国产一区二区色淫影院| 久久婷婷六月| 欧美日本不卡| 婷婷激情亚洲| 亚洲欧洲国产成人综合不卡| 91精品国产情侣高潮露脸| 在线免费观看AV| 国产男女XX00免费观看| 无码福利视频| 欧美成人日韩| 国产小视频a在线观看| 国产欧美日韩va另类在线播放| 国产精品私拍99pans大尺度| 无码专区在线观看| 欧美区一区| 亚洲精品国产精品乱码不卞| 亚洲Va中文字幕久久一区 | 五月激情综合网| 亚洲成人免费看| 亚洲天堂视频网| 九九九九热精品视频| 精品99在线观看| 婷婷五月在线视频| 久久精品这里只有精99品| 国产青青草视频| 97成人在线观看| 久久国产拍爱| 毛片三级在线观看| www.youjizz.com久久| 天堂岛国av无码免费无禁网站| 亚洲区视频在线观看| 久久久无码人妻精品无码| 精品久久久久无码| 亚洲 欧美 日韩综合一区| 最新国产午夜精品视频成人| 亚洲人妖在线| 国产真实乱人视频| 在线不卡免费视频| 亚洲第一区在线| 激情影院内射美女| 三区在线视频| 亚洲Av综合日韩精品久久久| 福利国产在线| 全午夜免费一级毛片| 人妻精品久久久无码区色视| 国产色偷丝袜婷婷无码麻豆制服| 伊人色在线视频| 成年A级毛片| 国产亚洲欧美在线人成aaaa| 成人福利视频网| 国产永久在线观看| 美女被狂躁www在线观看| 亚洲人成电影在线播放| 97无码免费人妻超级碰碰碰| 亚洲丝袜中文字幕| 欧美激情综合| 国产精品一区二区无码免费看片| 国产在线98福利播放视频免费| 亚洲一区二区视频在线观看| 亚洲最黄视频|