版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1軟件安全
C4典型軟件漏洞機(jī)理分析2提綱4.1緩沖區(qū)溢出漏洞緩沖區(qū)與內(nèi)存分布棧溢出堆溢出格式化串漏洞4.2Web應(yīng)用程序漏洞Web應(yīng)用安全概述SQL注入漏洞34.1.3堆溢出
上一節(jié)介紹了棧溢出的原理及利用方法。但近年來,另一種基于緩沖區(qū)溢出的攻擊逐漸成為主流。這種新興的攻擊手法的目標(biāo)從棧轉(zhuǎn)移到了Windows的堆管理器。盡管基于堆的攻擊要比棧攻擊困難很多,但是相對于棧上的攻擊更加難以防范,所以基于堆的攻擊仍然持續(xù)增長。程序在內(nèi)存中的映像……文本(代碼)段數(shù)據(jù)段堆棧段內(nèi)存低地址內(nèi)存高地址內(nèi)存遞增方向初始化數(shù)據(jù)段非初始化數(shù)據(jù)段(BSS)堆(Heap)棧(stack)堆的增長方向棧的增長方向內(nèi)核數(shù)據(jù)代碼0x800000000x7FFFFFFFPEB&TEB系統(tǒng)DLL代碼段54.1.3.1堆的基本知識堆與棧的區(qū)別棧變量包含函數(shù)內(nèi)部的普通變量、數(shù)組等。使用時不需額外的申請操作,由系統(tǒng)維護(hù)。堆是在程序運(yùn)行時動態(tài)分配的內(nèi)存。堆需要使用專有的函數(shù)進(jìn)行申請。(如C語言中的malloc函數(shù)和C++中的new函數(shù)等)一般用一個堆指針來使用申請得到的內(nèi)存。使用完畢后需要將堆指針傳給堆釋放函數(shù)回收這片內(nèi)存,否則會造成內(nèi)存泄露。64.1.3.1堆與棧的區(qū)別74.1.3.1堆的結(jié)構(gòu)堆塊與堆表堆塊:堆區(qū)的內(nèi)存按不同大小組織成塊,以堆塊為單位進(jìn)行標(biāo)識。一個堆塊包括兩個部分:塊首和塊身。塊首是一個堆塊頭部的幾個字節(jié),用來標(biāo)識這個堆塊自身的信息(大小、空閑或占用等)。塊身是緊跟在塊首后面的部分,也是最終分配給用戶使用的數(shù)據(jù)區(qū)。84.1.3.1堆的結(jié)構(gòu)堆塊與堆表堆表:位于堆區(qū)的起始位置,用于索引堆區(qū)中所有堆塊的重要信息(包括位置、大小、空閑與否等)。堆表的數(shù)據(jù)結(jié)構(gòu)決定了整個堆區(qū)的組織方式,是快速檢索空閑塊、保證堆分配效率的關(guān)鍵。堆表可能會采用平衡二叉樹等高級數(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):堆塊會返回一個由程序員定義的句柄,由程序員管理。104.1.3.1堆的結(jié)構(gòu)空閑堆塊比占有堆塊多出了兩個4字節(jié)的指針,這兩個指針用于鏈接系統(tǒng)中的其他空閑堆塊。114.1.3.1堆的結(jié)構(gòu)堆表在Windows中,占用態(tài)的堆塊被使用它的程序索引;而堆表只檢索所有空閑塊的堆塊。最重要的堆表有兩種:空閑雙向鏈表freelist(簡稱空表)快速單向鏈表lookaside(簡稱快表)124.1.3.1堆的結(jié)構(gòu)空表空閑堆塊的塊首中包含一對重要的指針,這對指針用于將空閑堆塊組織成雙向鏈表。根據(jù)大小不同,空表總共被分成128條134.1.3.1堆的結(jié)構(gòu)空表堆表區(qū)中有一個128項(xiàng)的數(shù)組,稱作空表索引(每項(xiàng)包含兩個指針,標(biāo)識一條空表)空閑堆塊的大小=索引項(xiàng)×8(字節(jié))144.1.3.1堆的結(jié)構(gòu)快表Windows用來加速堆塊分配而采用的一種堆表。也有128條,組織結(jié)構(gòu)與空表類似,只是其中的堆塊按照單鏈表組織。由于在堆溢出中一般不利用快表,故不作詳述。154.1.3.2堆溢出的利用基本原理與DWORDSHOOT堆管理系統(tǒng)的三類操作堆塊分配(將堆塊從空表中“卸下”)堆塊釋放(把堆塊“鏈入”空表)堆塊合并(將若干塊先從空表中“卸下”,修改塊首信息,把更新后的塊“鏈入”空表)這三類操作歸根到底都是對空表鏈的修改164.1.3.2堆溢出的利用堆溢出利用的精髓
用精心構(gòu)造的數(shù)據(jù)去溢出覆蓋下一個堆塊的塊首,使其改寫塊首中的前向指針(flink)和后向指針(blink),然后在分配、釋放、合并等操作發(fā)生時伺機(jī)獲得一次向內(nèi)存任意地址寫入任意數(shù)據(jù)的機(jī)會(ArbitraryDwordReset,又稱DwordShoot)。通過這個機(jī)會,可以控制設(shè)計(jì)的目標(biāo)(任意地址),選擇適當(dāng)?shù)哪繕?biāo)數(shù)據(jù),從而劫持進(jìn)程,運(yùn)行shellcode。174.1.3.2堆溢出的利用舉例:如何通過節(jié)點(diǎn)的拆卸產(chǎn)生DwordShoot
拆卸節(jié)點(diǎn)node時發(fā)生如下操作:
node->blink->flink=node->flink;
node->flink->blink=node->blink;
當(dāng)精心構(gòu)造的數(shù)據(jù)淹沒前向指針和后向指針時,如果在flink放入4字節(jié)的任意惡意數(shù)據(jù)內(nèi)容,在blink放入目標(biāo)地址,當(dāng)執(zhí)行以上操作時,導(dǎo)致目標(biāo)地址的內(nèi)容被修改為該4字節(jié)的惡意數(shù)據(jù)。184.1.3.2堆溢出的利用舉例:如何通過節(jié)點(diǎn)的拆卸產(chǎn)生DwordShoot
194.1.3.2堆溢出的利用根據(jù)攻擊目標(biāo)和4字節(jié)惡意數(shù)據(jù)內(nèi)容的不同,常見的攻擊組合方式有以下幾種:
204.1.4格式化串漏洞格式化串漏洞并不算緩沖區(qū)溢出漏洞。為了能夠?qū)⒆址?、變量、地址等?shù)據(jù)按照指定格式輸出,通常使用包含格式化控制符的常量字符串作為格式化串,然后指定用相應(yīng)變量來代替格式化串中的格式化控制符。printf(“a=%d,b=%d”,a,b);printf(“a=%d,b=%d”);214.1.4格式化串漏洞224.1.4格式化串漏洞格式符除了常見的d、f、u、o、x之外,還有一些指針型的格式符:s----參數(shù)對應(yīng)的是指向字符串的指針;
n----參數(shù)對應(yīng)的是一個整數(shù)型指針,將這個參數(shù)之前輸出的字符的數(shù)量寫入該格式符對應(yīng)參數(shù)指向的地址中。inta=0;printf(”1234567890%n”,&a);234.1.4格式化串漏洞適當(dāng)利用%p、%s、%n等格式符,一個精心構(gòu)造的格式化串即可實(shí)現(xiàn)對程序內(nèi)存數(shù)據(jù)的任意讀、任意寫,從而造成信息泄露、數(shù)據(jù)篡改和程序流程的非法控制這類威脅。該系列函數(shù)可能產(chǎn)生格式化串漏洞:printf,fprintf,sprintf,snprintf,v
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年購銷合同:某鋼鐵企業(yè)向供應(yīng)商訂購0萬噸原材料2篇
- 二零二五年度高鐵站房PC構(gòu)件預(yù)制及吊裝工程合同2篇
- 二零二五年度物業(yè)管理顧問合同(含交通樞紐管理)2篇
- 二零二五版貨車司機(jī)意外傷害賠償合同范本3篇
- 二零二五年度綠色環(huán)保型二手房按揭交易合同模板3篇
- 二零二五食堂承包合同(大路食堂運(yùn)營管理)3篇
- 二零二五版二手房買賣與家具選購代理合同3篇
- 稅務(wù)局2025年度企業(yè)社會責(zé)任報告編制合同
- 二零二五年度智慧社區(qū)家居安裝合同規(guī)范3篇
- 二零二五年度蟲草科研合作與技術(shù)轉(zhuǎn)移合同范本3篇
- 《新生兒預(yù)防接種》課件
- 小學(xué)五年級上冊數(shù)學(xué)寒假作業(yè)每日一練
- DB1303T382-2024 創(chuàng)傷性休克患者護(hù)理指南
- 2024年03月內(nèi)蒙古中國銀行內(nèi)蒙古分行春季校園招考筆試歷年參考題庫附帶答案詳解
- 鏈家、貝殼專業(yè)租房協(xié)議、房屋租賃合同、房屋出租協(xié)議
- 2024-2025學(xué)年華東師大新版八年級上冊數(shù)學(xué)期末復(fù)習(xí)試卷(含詳解)
- 《道路車輛 48V供電電壓的電氣及電子部件 電性能要求和試驗(yàn)方法》文本以及編制說明
- 2024年新高考I卷數(shù)學(xué)高考試卷(原卷+答案)
- 十八項(xiàng)醫(yī)療核心制度考試題與答案
- 大學(xué)生職業(yè)規(guī)劃大賽生涯發(fā)展報告
- 2024年鄂爾多斯市國資產(chǎn)投資控股集團(tuán)限公司招聘管理單位遴選500模擬題附帶答案詳解
評論
0/150
提交評論