




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1軟件安全
C4典型軟件漏洞機(jī)理分析2提綱4.1緩沖區(qū)溢出漏洞緩沖區(qū)與內(nèi)存分布棧溢出堆溢出格式化串漏洞4.2Web應(yīng)用程序漏洞Web應(yīng)用安全概述SQL注入漏洞34.1.3堆溢出
上一節(jié)介紹了棧溢出的原理及利用方法。但近年來(lái),另一種基于緩沖區(qū)溢出的攻擊逐漸成為主流。這種新興的攻擊手法的目標(biāo)從棧轉(zhuǎn)移到了Windows的堆管理器。盡管基于堆的攻擊要比棧攻擊困難很多,但是相對(duì)于棧上的攻擊更加難以防范,所以基于堆的攻擊仍然持續(xù)增長(zhǎng)。程序在內(nèi)存中的映像……文本(代碼)段數(shù)據(jù)段堆棧段內(nèi)存低地址內(nèi)存高地址內(nèi)存遞增方向初始化數(shù)據(jù)段非初始化數(shù)據(jù)段(BSS)堆(Heap)棧(stack)堆的增長(zhǎng)方向棧的增長(zhǎng)方向內(nèi)核數(shù)據(jù)代碼0x800000000x7FFFFFFFPEB&TEB系統(tǒng)DLL代碼段54.1.3.1堆的基本知識(shí)堆與棧的區(qū)別棧變量包含函數(shù)內(nèi)部的普通變量、數(shù)組等。使用時(shí)不需額外的申請(qǐng)操作,由系統(tǒng)維護(hù)。堆是在程序運(yùn)行時(shí)動(dòng)態(tài)分配的內(nèi)存。堆需要使用專(zhuān)有的函數(shù)進(jìn)行申請(qǐng)。(如C語(yǔ)言中的malloc函數(shù)和C++中的new函數(shù)等)一般用一個(gè)堆指針來(lái)使用申請(qǐng)得到的內(nèi)存。使用完畢后需要將堆指針傳給堆釋放函數(shù)回收這片內(nèi)存,否則會(huì)造成內(nèi)存泄露。64.1.3.1堆與棧的區(qū)別74.1.3.1堆的結(jié)構(gòu)堆塊與堆表堆塊:堆區(qū)的內(nèi)存按不同大小組織成塊,以堆塊為單位進(jìn)行標(biāo)識(shí)。一個(gè)堆塊包括兩個(gè)部分:塊首和塊身。塊首是一個(gè)堆塊頭部的幾個(gè)字節(jié),用來(lái)標(biāo)識(shí)這個(gè)堆塊自身的信息(大小、空閑或占用等)。塊身是緊跟在塊首后面的部分,也是最終分配給用戶使用的數(shù)據(jù)區(qū)。84.1.3.1堆的結(jié)構(gòu)堆塊與堆表堆表:位于堆區(qū)的起始位置,用于索引堆區(qū)中所有堆塊的重要信息(包括位置、大小、空閑與否等)。堆表的數(shù)據(jù)結(jié)構(gòu)決定了整個(gè)堆區(qū)的組織方式,是快速檢索空閑塊、保證堆分配效率的關(guān)鍵。堆表可能會(huì)采用平衡二叉樹(shù)等高級(jí)數(shù)據(jù)結(jié)構(gòu)用于優(yōu)化查找效率(往往不止一種數(shù)據(jù)結(jié)構(gòu))。94.1.3.1堆的結(jié)構(gòu)堆塊空閑態(tài):堆塊被鏈入空鏈表中,由系統(tǒng)管理。占有態(tài):堆塊會(huì)返回一個(gè)由程序員定義的句柄,由程序員管理。104.1.3.1堆的結(jié)構(gòu)空閑堆塊比占有堆塊多出了兩個(gè)4字節(jié)的指針,這兩個(gè)指針用于鏈接系統(tǒng)中的其他空閑堆塊。114.1.3.1堆的結(jié)構(gòu)堆表在Windows中,占用態(tài)的堆塊被使用它的程序索引;而堆表只檢索所有空閑塊的堆塊。最重要的堆表有兩種:空閑雙向鏈表freelist(簡(jiǎn)稱(chēng)空表)快速單向鏈表lookaside(簡(jiǎn)稱(chēng)快表)124.1.3.1堆的結(jié)構(gòu)空表空閑堆塊的塊首中包含一對(duì)重要的指針,這對(duì)指針用于將空閑堆塊組織成雙向鏈表。根據(jù)大小不同,空表總共被分成128條134.1.3.1堆的結(jié)構(gòu)空表堆表區(qū)中有一個(gè)128項(xiàng)的數(shù)組,稱(chēng)作空表索引(每項(xiàng)包含兩個(gè)指針,標(biāo)識(shí)一條空表)空閑堆塊的大小=索引項(xiàng)×8(字節(jié))144.1.3.1堆的結(jié)構(gòu)快表Windows用來(lái)加速堆塊分配而采用的一種堆表。也有128條,組織結(jié)構(gòu)與空表類(lèi)似,只是其中的堆塊按照單鏈表組織。由于在堆溢出中一般不利用快表,故不作詳述。154.1.3.2堆溢出的利用基本原理與DWORDSHOOT堆管理系統(tǒng)的三類(lèi)操作堆塊分配(將堆塊從空表中“卸下”)堆塊釋放(把堆塊“鏈入”空表)堆塊合并(將若干塊先從空表中“卸下”,修改塊首信息,把更新后的塊“鏈入”空表)這三類(lèi)操作歸根到底都是對(duì)空表鏈的修改164.1.3.2堆溢出的利用堆溢出利用的精髓
用精心構(gòu)造的數(shù)據(jù)去溢出覆蓋下一個(gè)堆塊的塊首,使其改寫(xiě)塊首中的前向指針(flink)和后向指針(blink),然后在分配、釋放、合并等操作發(fā)生時(shí)伺機(jī)獲得一次向內(nèi)存任意地址寫(xiě)入任意數(shù)據(jù)的機(jī)會(huì)(ArbitraryDwordReset,又稱(chēng)DwordShoot)。通過(guò)這個(gè)機(jī)會(huì),可以控制設(shè)計(jì)的目標(biāo)(任意地址),選擇適當(dāng)?shù)哪繕?biāo)數(shù)據(jù),從而劫持進(jìn)程,運(yùn)行shellcode。174.1.3.2堆溢出的利用舉例:如何通過(guò)節(jié)點(diǎn)的拆卸產(chǎn)生DwordShoot
拆卸節(jié)點(diǎn)node時(shí)發(fā)生如下操作:
node->blink->flink=node->flink;
node->flink->blink=node->blink;
當(dāng)精心構(gòu)造的數(shù)據(jù)淹沒(méi)前向指針和后向指針時(shí),如果在flink放入4字節(jié)的任意惡意數(shù)據(jù)內(nèi)容,在blink放入目標(biāo)地址,當(dāng)執(zhí)行以上操作時(shí),導(dǎo)致目標(biāo)地址的內(nèi)容被修改為該4字節(jié)的惡意數(shù)據(jù)。184.1.3.2堆溢出的利用舉例:如何通過(guò)節(jié)點(diǎn)的拆卸產(chǎn)生DwordShoot
194.1.3.2堆溢出的利用根據(jù)攻擊目標(biāo)和4字節(jié)惡意數(shù)據(jù)內(nèi)容的不同,常見(jiàn)的攻擊組合方式有以下幾種:
204.1.4格式化串漏洞格式化串漏洞并不算緩沖區(qū)溢出漏洞。為了能夠?qū)⒆址⒆兞?、地址等?shù)據(jù)按照指定格式輸出,通常使用包含格式化控制符的常量字符串作為格式化串,然后指定用相應(yīng)變量來(lái)代替格式化串中的格式化控制符。printf(“a=%d,b=%d”,a,b);printf(“a=%d,b=%d”);214.1.4格式化串漏洞224.1.4格式化串漏洞格式符除了常見(jiàn)的d、f、u、o、x之外,還有一些指針型的格式符:s----參數(shù)對(duì)應(yīng)的是指向字符串的指針;
n----參數(shù)對(duì)應(yīng)的是一個(gè)整數(shù)型指針,將這個(gè)參數(shù)之前輸出的字符的數(shù)量寫(xiě)入該格式符對(duì)應(yīng)參數(shù)指向的地址中。inta=0;printf(”1234567890%n”,&a);234.1.4格式化串漏洞適當(dāng)利用%p、%s、%n等格式符,一個(gè)精心構(gòu)造的格式化串即可實(shí)現(xiàn)對(duì)程序內(nèi)存數(shù)據(jù)的任意讀、任意寫(xiě),從而造成信息泄露、數(shù)據(jù)篡改和程序流程的非法控制這類(lèi)威脅。該系列函數(shù)可能產(chǎn)生格式化串漏洞:printf,fprintf,sprintf,snprintf,v
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025恒豐銀行重慶分行社會(huì)招聘(5.22截止)模擬試卷及一套完整答案詳解
- 2025北京石景山區(qū)招聘社區(qū)工作者62人考前自測(cè)高頻考點(diǎn)模擬試題及一套完整答案詳解
- 2025福建三明市教育局華東師范大學(xué)附屬三明中學(xué)招聘緊缺急需專(zhuān)業(yè)工作人員18人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(有一套)
- 遼寧省朝陽(yáng)市多校2024-2025學(xué)年高一下學(xué)期6月聯(lián)合考試地理試卷(解析版)
- 一次勇敢的挑戰(zhàn)記事類(lèi)作文9篇
- 2025年寶雞千陽(yáng)縣中醫(yī)醫(yī)院招聘(15人)考前自測(cè)高頻考點(diǎn)模擬試題及1套參考答案詳解
- 2025廣西貴港市公安局招聘警務(wù)輔助人員50人模擬試卷及答案詳解(名師系列)
- 2025年嘉興市秀洲區(qū)教育體育局所屬事業(yè)單位公開(kāi)選聘工作人員2人考前自測(cè)高頻考點(diǎn)模擬試題及1套完整答案詳解
- 2025廣西賀州市人民醫(yī)院招聘殘障人士人員考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解1套
- 多功能客戶服務(wù)響應(yīng)系統(tǒng)
- DB4405-T 303-2023 獅頭鵝屠宰操作規(guī)程
- 經(jīng)合組織成員國(guó)
- 人工智能技術(shù)及應(yīng)用習(xí)題答案題庫(kù)
- 縣中醫(yī)院婦科重點(diǎn)專(zhuān)科建設(shè)匯報(bào)
- 堅(jiān)持人民至上 工會(huì)研討發(fā)言
- 美學(xué)原理全套教學(xué)課件
- 期末復(fù)習(xí)(課件)新思維英語(yǔ)四年級(jí)上冊(cè)
- 子宮脫垂試題及答案
- GB/T 90.1-2023緊固件驗(yàn)收檢查
- 中國(guó)政治思想史復(fù)習(xí)資料
評(píng)論
0/150
提交評(píng)論