第4章-軟件漏洞_第1頁(yè)
第4章-軟件漏洞_第2頁(yè)
第4章-軟件漏洞_第3頁(yè)
第4章-軟件漏洞_第4頁(yè)
第4章-軟件漏洞_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第四章軟件漏洞2023/2/4網(wǎng)絡(luò)攻防技術(shù)2本章主要內(nèi)容4.1概述4.2典型漏洞類型4.3溢出漏洞利用原理4.4漏洞利用保護(hù)機(jī)制4.1概述漏洞的定義:指信息系統(tǒng)硬件、軟件、操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)庫(kù)等在設(shè)計(jì)上、實(shí)現(xiàn)上出現(xiàn)的可以被攻擊者利用的錯(cuò)誤、缺陷和疏漏。通俗一點(diǎn)說,漏洞就是可以被攻擊利用的系統(tǒng)弱點(diǎn)。2023/2/4網(wǎng)絡(luò)攻防技術(shù)34.1概述漏洞的分類:針對(duì)安全操作系統(tǒng)研究而提出的漏洞分類。將安全性漏洞和軟件錯(cuò)誤結(jié)合在一起的漏洞分類。多維度分類。廣義漏洞分類。抽象分類。2023/2/4網(wǎng)絡(luò)攻防技術(shù)44.1概述漏洞攻擊通常包含3個(gè)步驟,分別是:漏洞發(fā)現(xiàn)(VulnerabilityDiscovery)、漏洞分析(VulnerabilityAnalysis)、漏洞利用(VulnerabilityExploit)。從導(dǎo)致的后果來看,漏洞可能會(huì)造成:以匿名身份直接獲取系統(tǒng)最高權(quán)限;從普通用戶提升為管理員用戶;實(shí)施遠(yuǎn)程拒絕服務(wù)攻擊等。2023/2/4網(wǎng)絡(luò)攻防技術(shù)54.1概述漏洞的標(biāo)準(zhǔn)化研究:公共漏洞和暴露(CommonVulnerabilities&Exposures,CVE)通用缺陷枚舉(CommonWeaknessEnumeration,CWE)2023/2/4網(wǎng)絡(luò)攻防技術(shù)62023/2/4網(wǎng)絡(luò)攻防技術(shù)7本章主要內(nèi)容4.1概述4.2典型漏洞類型4.3溢出漏洞利用原理4.4漏洞利用保護(hù)機(jī)制4.2典型漏洞類型棧溢出(StackOverflow,CWE-121)堆溢出(HeapOverflow,CWE-122)格式化串(FormatString,CWE-134)整型溢出(IntegerOverflow,CWE-190)釋放再使用(UseafterFree,CWE-416)2023/2/4網(wǎng)絡(luò)攻防技術(shù)84.2.1棧溢出棧溢出攻擊的相關(guān)概念最早要追述到1972年美國(guó)空軍發(fā)表的一份研究報(bào)告《ComputerSecurityTechnologyPlanningStudy》。在這份報(bào)告中,通過溢出緩沖區(qū)來注入代碼這一想法首次被提了出來。直到1986年才出現(xiàn)了首次真實(shí)的攻擊,Morris蠕蟲病毒利用了Unix操作系統(tǒng)中fingerd程序的gets()函數(shù)導(dǎo)致的棧溢出來實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。1996年,EliasLevy(a.k.aAlephOne)在大名鼎鼎的Phrack雜志上發(fā)表了文章《SmashingtheStackforFunandProfit》,從此棧溢出漏洞的利用技術(shù)被廣泛知曉。2023/2/4網(wǎng)絡(luò)攻防技術(shù)94.2.1棧溢出進(jìn)程使用的操作系統(tǒng)內(nèi)存一般可以劃分為4部分,按照內(nèi)存地址由低到高,依次是:棧(Stack)、堆、數(shù)據(jù)段、文本(代碼)段。棧:由編譯器自動(dòng)分配釋放,是用戶存放程序臨時(shí)創(chuàng)建的局部變量、函數(shù)參數(shù)等數(shù)據(jù)的地方。棧是一個(gè)寄存、交換臨時(shí)數(shù)據(jù)的內(nèi)存緩沖區(qū)。堆:一般由程序編寫人員分配釋放,若編寫人員不釋放,程序結(jié)束時(shí)可能由操作系統(tǒng)回收,分配方式類似于鏈表。數(shù)據(jù)段:用來存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域。代碼段:用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。這里存放著由處理器直接執(zhí)行的二進(jìn)制代碼。2023/2/4網(wǎng)絡(luò)攻防技術(shù)104.2.1棧溢出每個(gè)進(jìn)程有一個(gè)棧,在這個(gè)進(jìn)程中每個(gè)函數(shù)被調(diào)用時(shí)分別從這個(gè)棧占用一段區(qū)域,稱為棧幀(StackFrame)。2023/2/4網(wǎng)絡(luò)攻防技術(shù)114.2.1棧溢出2023/2/4網(wǎng)絡(luò)攻防技術(shù)12main函數(shù)入口棧內(nèi)存高端內(nèi)存低端main函數(shù)的數(shù)據(jù)callfuncEIP寄存器func函數(shù)入口…

……

…004011C4004011CC004011D1return…

…參數(shù)004011D1buff00401210004011D1棧底棧頂內(nèi)存方向:由低到高棧方向:由高到低Main函數(shù)棧底EBP函數(shù)調(diào)用與棧4.2.1棧溢出2023/2/4網(wǎng)絡(luò)攻防技術(shù)13main函數(shù)入口棧內(nèi)存高端內(nèi)存低端main函數(shù)的數(shù)據(jù)callfuncfunc函數(shù)入口…

……

…return…

…參數(shù)004011D1buffMain函數(shù)棧底EBP在一次函數(shù)調(diào)用中實(shí)際會(huì)保存在棧中的數(shù)據(jù)包括:調(diào)用者參數(shù)、EIP的值(返回地址)、EBP的值函數(shù)調(diào)用與棧4.2.1棧溢出2023/2/4網(wǎng)絡(luò)攻防技術(shù)14main函數(shù)入口棧內(nèi)存高端內(nèi)存低端main函數(shù)的數(shù)據(jù)callfuncfunc函數(shù)入口…

……

…return…

…參數(shù)004011D1buffMain函數(shù)棧底EBP如果在棧中發(fā)生緩沖區(qū)溢出,極可能使的棧所保存的EIP指針值被改變。也即程序原有流程被改變。函數(shù)調(diào)用與棧4.2.1棧溢出2023/2/4網(wǎng)絡(luò)攻防技術(shù)15棧溢出實(shí)例4.2.1棧溢出2023/2/4網(wǎng)絡(luò)攻防技術(shù)16在拷貝argv[1]指向的字符串之前,并沒有檢測(cè)該字符串的長(zhǎng)度,如果該字符串的長(zhǎng)度大于16,則復(fù)制時(shí)就會(huì)覆蓋name數(shù)組下方的棧空間4.2.2堆溢出堆的特點(diǎn):堆是程序運(yùn)行時(shí)動(dòng)態(tài)分配的內(nèi)存。所需分配的內(nèi)存大小在程序運(yùn)行時(shí)由用戶定義。堆在使用時(shí)需要使用專用的函數(shù)進(jìn)行申請(qǐng),如C語(yǔ)言中的malloc等函數(shù)、C++中的new函數(shù)等。一般用一個(gè)堆指針來使用申請(qǐng)的內(nèi)存,讀、寫、釋放都是通過這個(gè)指針來完成。使用完畢后要通過堆釋放函數(shù)進(jìn)行回收這片內(nèi)存,否則會(huì)造成內(nèi)存泄漏。如free、delete等。2023/2/4網(wǎng)絡(luò)攻防技術(shù)17堆的數(shù)據(jù)結(jié)構(gòu)2023/2/4網(wǎng)絡(luò)攻防技術(shù)18堆表:堆表一般位于堆區(qū)的起始位置,用于檢索堆區(qū)中所有堆塊的總要信息。堆塊:堆區(qū)內(nèi)存按不同大小組織成塊,以堆塊為單位進(jìn)行標(biāo)識(shí)。一個(gè)堆塊包括兩個(gè)部分:塊首和塊身。塊首用來標(biāo)識(shí)塊的自身的信息,例如,大小、空閑或占用狀態(tài)。塊身是最終分配給用戶使用的數(shù)據(jù)區(qū)。Windows系統(tǒng)的堆表——空表

2023/2/4網(wǎng)絡(luò)攻防技術(shù)19Windows系統(tǒng)的堆表——快表快表是Windows用來加速分配而采用的一種堆表。這類單向鏈表中不會(huì)發(fā)生堆塊合并(其中空閑堆塊塊首被置為占用態(tài)防止堆塊合并)??毂硪灿?28條,組織結(jié)構(gòu)與空表類似,只是堆塊按單鏈表組織,而且每條快表最多只有4個(gè)節(jié)點(diǎn)。lookaside[6]2023/2/4網(wǎng)絡(luò)攻防技術(shù)20堆的操作(1)堆的分配:快表分配、普通空表分配和零號(hào)空表(free[0])分配??毂矸峙洌簩ふ掖笮∑ヅ涞目臻e堆塊,把它從堆表中卸下,給程序使用。普通空表分配:先尋找最優(yōu)的空閑塊分配,若失敗,則尋找次優(yōu)的空閑塊分配。零號(hào)空表分配:按照大小升序鏈著大小不同的空閑塊,找最優(yōu)結(jié)果。當(dāng)空表中找不到最優(yōu)的堆塊時(shí),會(huì)發(fā)生次優(yōu)分配,即從大塊按照請(qǐng)求的大小精確割出一塊進(jìn)行分配,然后給剩下部分重新標(biāo)注塊首,鏈入空表。2023/2/4網(wǎng)絡(luò)攻防技術(shù)21堆的操作(2)堆塊釋放將堆塊狀態(tài)改為空閑,鏈入相應(yīng)的堆表。所有的釋放塊都鏈入堆表的末尾。(3)堆塊合并堆塊合并發(fā)生于空表。經(jīng)過反復(fù)的申請(qǐng)與釋放,堆區(qū)產(chǎn)生很多內(nèi)存碎片。幾個(gè)注意點(diǎn):快表空閑堆塊被置為占用態(tài),所以不會(huì)發(fā)生堆塊合并操作??毂碇挥芯_分配時(shí)才會(huì)分配。分配優(yōu)先使用快表,失敗時(shí)才使用空表。2023/2/4網(wǎng)絡(luò)攻防技術(shù)22堆溢出示例1 #defineBUFFSIZE322 intmain(intargc,char*argv[]){3 char*buf1;4 buf1=(char*)malloc(BUFFSIZE); //mallocablockofmemory5strcpy(buf1,argv[1]); //copyparametertobuf16 printf("%s\n",buf1); //printthebuf17 free(buf1); //freebuf18 return0;9 }

拷貝字符串之前沒有對(duì)字符串的長(zhǎng)度進(jìn)行檢查,所以會(huì)產(chǎn)生溢出,覆蓋緩沖區(qū)后面的內(nèi)容,也就是覆蓋下一個(gè)堆塊的塊首,造成堆管理結(jié)構(gòu)混亂。4.2.3格式化串所謂格式化串,就是在*printf()系列函數(shù)中按照一定的格式對(duì)數(shù)據(jù)進(jìn)行輸出,可以輸出到標(biāo)準(zhǔn)輸出,即printf(),也可以輸出到文件句柄,字符串等。對(duì)應(yīng)的函數(shù)有fprintf,sprintf,snprintf,vprintf,vfprintf,vsprintf,vsnprintf等。2023/2/4網(wǎng)絡(luò)攻防技術(shù)24格式化串的棧結(jié)構(gòu)2023/2/4網(wǎng)絡(luò)攻防技術(shù)25

printf(“a=%d,b=%d\n”,a,b);格式化串溢出棧布局2023/2/4網(wǎng)絡(luò)攻防技術(shù)26

因?yàn)閰?shù)的不固定,可能導(dǎo)致棧中數(shù)據(jù)泄露4.2.4整型溢出一個(gè)整數(shù)是一個(gè)固定的長(zhǎng)度(32位或64位),它能存儲(chǔ)的最大值是固定的,當(dāng)嘗試去存儲(chǔ)一個(gè)大于這個(gè)固定的最大值時(shí),將會(huì)導(dǎo)致一個(gè)整型溢出。存儲(chǔ)溢出運(yùn)算溢出符號(hào)溢出2023/2/4網(wǎng)絡(luò)攻防技術(shù)27存儲(chǔ)溢出長(zhǎng)整型賦值給短整型intlen1=0x10000;

shortlen2=len1;//len2=0x0000短整型賦值給長(zhǎng)整型

intlen1=-1;shortlen2=1;len1=len2;//len1=0xffffffff//len2=0x0001//len1=0xffff0001=-132023/2/4網(wǎng)絡(luò)攻防技術(shù)28運(yùn)算溢出boolfunc(char*userdata,shortdatalength)

{

char*buff;

...

if(datalength!=strlen(userdata))

returnfalse;

datalength=datalength*2;

buff=malloc(datalength);

strncpy(buff,userdata,datalength)

...

}

2023/2/4網(wǎng)絡(luò)攻防技術(shù)29運(yùn)算溢出boolfunc(char*userdata,shortdatalength)//datalength=0x8000

{

char*buff;

...

if(datalength!=strlen(userdata))

returnfalse;

datalength=datalength*2;//datalength=0x10000

buff=malloc(datalength);

strncpy(buff,userdata,datalength)

...

}2023/2/4網(wǎng)絡(luò)攻防技術(shù)30符號(hào)溢出整型數(shù)是分為有符號(hào)整型數(shù)和無符號(hào)整型數(shù)的。一般對(duì)長(zhǎng)度變量都要求使用無符號(hào)整型數(shù),如果程序員忽略了符號(hào)的話,在進(jìn)行安全檢查判斷的時(shí)候就可能出現(xiàn)錯(cuò)誤。2023/2/4網(wǎng)絡(luò)攻防技術(shù)31符號(hào)溢出ApacheWebServer分塊(chunked)編碼遠(yuǎn)程溢出漏洞出于安全考慮,在將分塊數(shù)據(jù)拷貝到緩沖區(qū)之前,Apache會(huì)對(duì)分塊長(zhǎng)度進(jìn)行檢查。如果分塊長(zhǎng)度小<緩沖區(qū),根據(jù)分塊長(zhǎng)度進(jìn)行數(shù)據(jù)拷貝;如果分塊長(zhǎng)度>緩沖區(qū),Apache將最多只拷貝緩沖區(qū)長(zhǎng)度的數(shù)據(jù)。然而在進(jìn)行上述檢查時(shí),沒有將分塊長(zhǎng)度轉(zhuǎn)換為無符號(hào)型進(jìn)行比較。因此,如果攻擊者將分塊長(zhǎng)度設(shè)置成一個(gè)負(fù)值,就會(huì)繞過上述安全檢查,Apache會(huì)將一個(gè)超長(zhǎng)的分塊數(shù)據(jù)拷貝到緩沖區(qū)中,這會(huì)造成緩沖區(qū)溢出。2023/2/4網(wǎng)絡(luò)攻防技術(shù)324.2.5釋放再引用釋放重引用漏洞(UseafterFree,UAF),就是使用到已被釋放的內(nèi)存,最終導(dǎo)致內(nèi)存崩潰或任意代碼執(zhí)行的漏洞。UAF漏洞在瀏覽器中是最為常見的,比如IE、Chrome、Firefox等。2005年12月,第一個(gè)UAF漏洞CVE-2005-4360被發(fā)現(xiàn)。當(dāng)時(shí)并沒有直接命名為“UseAfterFree”,僅以遠(yuǎn)程拒絕服務(wù)歸類。CVE數(shù)據(jù)庫(kù)所記錄的UAF漏洞的條目,自2008年開始以超過每年翻一番的速度增長(zhǎng)。2023/2/4網(wǎng)絡(luò)攻防技術(shù)33如果指針?biāo)赶虻膶?duì)象被釋放或者回收,但是對(duì)該指針沒有作任何修改,以至于該指針仍舊指向已經(jīng)回收的內(nèi)存地址,此情況下該指針便稱為懸垂指針。懸垂指針指向的內(nèi)存空間被回收后會(huì)被添加進(jìn)空閑堆表或位于棧頂之上,操作系統(tǒng)按需操作和使用這些內(nèi)存空間。如果操作系統(tǒng)將這部分已經(jīng)釋放的內(nèi)存重新分配給另一個(gè)指針,而原來懸垂指針因?yàn)闆]及時(shí)置空而被再次引用,其后果是難以預(yù)期的。2023/2/4網(wǎng)絡(luò)攻防技術(shù)34懸垂指針懸垂指針—棧#include<iostream>#include<windows.h>usingnamespacestd;int*p=NULL;voidfun(){inti=10;p=&i;}voidmain(){fun();cout<<"*p="<<*p<<endl;//輸出*p=10,因?yàn)閜依然指向變量i的內(nèi)存空間Sleep(1000);cout<<"*p="<<*p<<endl;//此時(shí),fun函數(shù)執(zhí)行后1秒,fun函數(shù)中的i變量的??臻g被釋放,輸出*p的值將不可預(yù)測(cè)}2023/2/4網(wǎng)絡(luò)攻防技術(shù)35懸垂指針—堆#include<iostream>#include<windows.h>usingnamespacestd;voidmain(){inti=10;int*p=(int*)malloc(sizeof(int));

*p=i;cout<<"*p="<<*p<<endl;//輸出*p=10

free(p);Sleep(1000);cout<<“*p=”<<*p<<endl;//此時(shí),fun函數(shù)執(zhí)行后1秒,指針p分配的堆塊被回收,輸出*p的值將不可預(yù)測(cè)}2023/2/4網(wǎng)絡(luò)攻防技術(shù)36釋放重引用原理生成懸垂指針使用懸垂指針2023/2/4網(wǎng)絡(luò)攻防技術(shù)37#definesize32intmain(intargc,char**argv){

char*buf1;char*buf2; buf1=(char*)malloc(size);printf(“buf1:0x%p\n”,buf1);free(buf1);//釋放buf1,使得buf1成為懸掛指針buf2=(char*)malloc(size);//分配buf2“占坑”buf1的內(nèi)存位置printf(“buf2:0x%p\n\n”,buf2);memset(buf2,0,size);//對(duì)buf2進(jìn)行內(nèi)存清零printf(“buf2:%d\n”,*buf2);//重引用已釋放的buf1指針,但卻導(dǎo)致buf2值被篡改printf(“====UseAfterFree===\n”);strncpy(buf1,“hack”,5);printf(“buf2:%s\n\n”,buf2);free(buf2);}

UAF漏洞實(shí)例2023/2/4網(wǎng)絡(luò)攻防技術(shù)382023/2/4網(wǎng)絡(luò)攻防技術(shù)39本章主要內(nèi)容4.1概述4.2典型漏洞類型4.3溢出漏洞利用原理4.4漏洞利用保護(hù)機(jī)制4.3溢出漏洞利用原理溢出攻擊的基本流程溢出利用的關(guān)鍵技術(shù)2023/2/4網(wǎng)絡(luò)攻防技術(shù)404.3.1溢出攻擊的基本流程2023/2/4網(wǎng)絡(luò)攻防技術(shù)41(1)在哪里注入“溢出”數(shù)據(jù)?(2)數(shù)據(jù)要多長(zhǎng)才能覆蓋返回地址?(3)使用什么內(nèi)容覆蓋返回地址?(4)執(zhí)行什么樣的攻擊代碼?注入惡意數(shù)據(jù)溢出緩沖區(qū)控制流重定向執(zhí)行有效載荷4.3.2溢出利用的關(guān)鍵技術(shù)溢出點(diǎn)定位覆蓋執(zhí)行控制地址覆蓋異常處理結(jié)構(gòu)跳轉(zhuǎn)地址的確定Shellcode定位和跳轉(zhuǎn)2023/2/4網(wǎng)絡(luò)攻防技術(shù)42一、溢出點(diǎn)定位技術(shù)如何確定溢出點(diǎn)位置?探測(cè)法反匯編分析?2023/2/4網(wǎng)絡(luò)攻防技術(shù)43一、溢出點(diǎn)定位技術(shù)探測(cè)法構(gòu)造數(shù)據(jù),根據(jù)出錯(cuò)的情況來判斷。如輸入字符串:2023/2/4網(wǎng)絡(luò)攻防技術(shù)44探測(cè)法intmain(intargc,char*argv[]){ charname[16];

strcpy(name,argv[1]); printf(“%s\n”,name); return0;}例1,棧溢出示例如果輸入:01234567890123456789AAAABBBBCCCCDDDD2023/2/4網(wǎng)絡(luò)攻防技術(shù)45反匯編分析反匯編分析strcpy(name,(constchar*)argv[1]);004113C8

moveax,dwordptr[ebp+0Ch]004113CB

movecx,dwordptr[eax+4]004113CEpushecx004113CFlea

edx,[ebp-10h]004113D2pushedx004113D3call@ILT+165(_strcpy)(4110AAh)2023/2/4網(wǎng)絡(luò)攻防技術(shù)46二、覆蓋執(zhí)行控制地址執(zhí)行控制地址可包括:覆蓋返回地址覆蓋函數(shù)指針變量覆蓋異常處理結(jié)構(gòu)2023/2/4網(wǎng)絡(luò)攻防技術(shù)47三、覆蓋異常處理結(jié)構(gòu)異常處理是一種對(duì)程序異常的處理機(jī)制,它把錯(cuò)誤處理代碼與正常情況下所執(zhí)行的代碼分開。當(dāng)程序發(fā)生異常時(shí),系統(tǒng)中斷當(dāng)前線程,將控制權(quán)交給異常處理程序Windows的異常處理機(jī)制稱為結(jié)構(gòu)化異常處理(StructuredExceptionHandling)2023/2/4網(wǎng)絡(luò)攻防技術(shù)48結(jié)構(gòu)化異常處理與SEH通過異常處理結(jié)構(gòu)鏈(SEH)管理SEH處于??臻g的單向鏈表局部變量異常處理結(jié)點(diǎn)EBP(基址指針)EIP(返回地址)Functionarguments(參數(shù))內(nèi)存低端內(nèi)存高端2023/2/4網(wǎng)絡(luò)攻防技術(shù)49

異常處理結(jié)構(gòu)鏈TEB(fs:[0])EXCEPTION_REGISTRATION下一個(gè)回調(diào)函數(shù)b的地址0xFFFFFFFFToplevel函數(shù)的地址2023/2/4網(wǎng)絡(luò)攻防技術(shù)50結(jié)構(gòu)化異常處理與SEH通過異常處理結(jié)構(gòu)鏈(SEH)管理SEH處于??臻g的單向鏈表加入新函數(shù)時(shí)采用頭插法2023/2/4網(wǎng)絡(luò)攻防技術(shù)51何時(shí)需要覆蓋異常處理結(jié)構(gòu)由于溢出時(shí)破壞了棧結(jié)構(gòu),可能在函數(shù)返回之前會(huì)產(chǎn)生錯(cuò)誤,此時(shí)系統(tǒng)將控制權(quán)交給SEH2023/2/4網(wǎng)絡(luò)攻防技術(shù)52覆蓋異常處理結(jié)構(gòu)TEB(fs:[0])EXCEPTION_REGISTRATION從這里開始覆蓋我們可以控制的地址下一個(gè)回調(diào)函數(shù)2的地址0xFFFFFFFFToplevel函數(shù)的地址shellcode2023/2/4網(wǎng)絡(luò)攻防技術(shù)53四、跳轉(zhuǎn)地址的確定跳轉(zhuǎn)指令的選取jmpesp、callebx、callecx等。跳轉(zhuǎn)指令的搜索范圍用戶空間的任意地址、系統(tǒng)dll、進(jìn)程代碼段、PEB、TEB跳轉(zhuǎn)指令地址的選擇規(guī)律2023/2/4網(wǎng)絡(luò)攻防技術(shù)54五、Shellcode的定位和跳轉(zhuǎn)2023/2/4網(wǎng)絡(luò)攻防技術(shù)55NopSled:類NOP指令填充,可以是NOP,也可以是inceax等無副作用指令。Decoder:解碼部分,對(duì)Real_Shellcode解碼。Real_Shellcode:真正有意義的shellcode部分,但是經(jīng)過了編碼處理。Shellcode的基本構(gòu)成調(diào)用者的棧調(diào)用參數(shù)ReturnaddressEBP局部變量ShellcodeRNNNNNNNNEBPESPESPESPESPJMPESPSSSS內(nèi)存高端五、Shellcode的定位和跳轉(zhuǎn)2023/2/4網(wǎng)絡(luò)攻防技術(shù)562023/2/4網(wǎng)絡(luò)攻防技術(shù)57本章主要內(nèi)容4.1概述4.2典型漏洞類型4.3溢出漏洞利用原理4.4漏洞利用保護(hù)機(jī)制4.3溢出利用保護(hù)機(jī)制GS編譯保護(hù)機(jī)制SafeSEH機(jī)制DEP機(jī)制ASL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論