自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

網(wǎng)絡(luò)安全基礎(chǔ),緩沖區(qū)溢出漏洞解析

安全 應(yīng)用安全
緩沖區(qū)溢出安全漏洞有一種忽視的感覺,起始最開始的、最有威力的還是緩沖區(qū)溢出漏洞,很多零日漏洞也是基于緩沖區(qū)漏洞的,最具破壞力的也是緩沖區(qū)漏洞。

現(xiàn)在的網(wǎng)絡(luò)安全領(lǐng)域由各種各樣的門派,最火的莫屬web領(lǐng)域的網(wǎng)絡(luò)安全,還有物聯(lián)網(wǎng)安全等等。緩沖區(qū)溢出安全漏洞有一種忽視的感覺,起始最開始的、最有威力的還是緩沖區(qū)溢出漏洞,很多零日漏洞也是基于緩沖區(qū)漏洞的,最具破壞力的也是緩沖區(qū)漏洞。這篇文章簡單講解一下緩沖區(qū)漏洞的原理知識,后期結(jié)合metasploit和靶機系統(tǒng),推出實戰(zhàn)方面的課程。

[[248253]]

1. 內(nèi)存攻防技術(shù)

很多學(xué)習(xí)網(wǎng)絡(luò)安全的人員有這樣的一種感覺,對于緩沖區(qū)溢出、棧溢出、堆溢出、shellcode等有一定的了解,模模糊糊的了解術(shù)語和概念,但是如果實踐編寫一些滲透代碼時,總感覺無從下手,也許是沒有邁過技術(shù)門檻。

內(nèi)存攻擊指的是利用軟件的安全漏洞,構(gòu)造惡意的輸入導(dǎo)致軟件在處理輸入數(shù)據(jù)是出現(xiàn)非預(yù)期的錯誤,導(dǎo)致數(shù)據(jù)被寫到特定的位置,改變了軟件的控制流程,轉(zhuǎn)而執(zhí)行外部輸入的指令,造成目標(biāo)系統(tǒng)被遠程控制或者拒絕服務(wù)。

內(nèi)存攻擊的3個重點:

  • 軟件存在安全漏洞
  • 惡意的輸入觸發(fā)安全漏洞
  • 改變軟件的控制流程

2. 緩沖區(qū)溢出漏洞機制

緩沖區(qū)溢出漏洞是由于程序沒有對緩沖區(qū)的邊界條件進行檢查,導(dǎo)致引發(fā)的異常行為,向緩沖區(qū)寫入數(shù)據(jù),內(nèi)容超過了程序員設(shè)定的緩沖區(qū)邊界,覆蓋了相鄰的內(nèi)存區(qū)域,覆蓋了其他變量還有可能影響程序的控制流程。

這里舉個例子,如下圖所示,內(nèi)存中存在兩個相鄰的變量,A是char[]類型的,用于接收外部的數(shù)據(jù),輸入為8個字節(jié),B是短整型的,B的初始值是65535(0xffff)。如果用戶輸入的是"abcdefghi",9個字節(jié),那么B就被修改為0x0069,如下圖所示

根據(jù)緩沖區(qū)位置的不同,可以分為:

  • 棧溢出(Stack Overflow)
  • 堆溢出(Heap Overflow)

3. 棧溢出漏洞原理

棧是由操作系統(tǒng)創(chuàng)建和維護的,支持程序內(nèi)的函數(shù)調(diào)用功能。

函數(shù)調(diào)用時,程序會將返回地址壓入棧中,執(zhí)行換被調(diào)用函數(shù)的代碼后,通過ret命令從棧中彈出返回地址,放入eip寄存器,繼續(xù)程序的運行。

棧溢出的原理:程序向棧中寫入數(shù)據(jù)時,當(dāng)寫入的數(shù)據(jù)長度超過棧分配的緩沖區(qū)空間時,就造成了棧溢出。

棧溢出最常見的利用方式有:

  • 覆蓋函數(shù)返回地址
  • 覆蓋異常處理結(jié)構(gòu)

這里舉個例子,說明覆蓋函數(shù)返回地址的情況,一般發(fā)生在函數(shù)調(diào)用時,程序?qū)⒅鞒绦虻南乱粭l指令地址保存到棧中,子函數(shù)執(zhí)行結(jié)束后,從棧中彈出主程序的指令地址,繼續(xù)執(zhí)行。這樣程序的返回地址、函數(shù)的調(diào)用參數(shù)、局部變量均位于同一個棧中,就給棧溢出改寫程序流程提供了機會??聪旅嬉欢未a

  1. #include<string.h> 
  2. void foo(char *bar) 
  3. {  
  4.  char c[8]; 
  5.  strcpy(c,bar); 
  6. int main() 
  7. char array[]='abcdabcdabcd\x18\xff\x18\x00'; 
  8. foo(array); 
  9. return 0; 

注意上述代碼中的strcpy(c,bar)并沒有進行邊界檢查,這段代碼執(zhí)行結(jié)束前后的堆??臻g的分配情況如下圖所示。源字符串a(chǎn)rray的16個字符復(fù)制到C中,最后的4個字符覆蓋了棧的返回地址,改為0x0018ef18,當(dāng)函數(shù)foo返回之后,程序就會跳轉(zhuǎn)到0x0018ef18這個地址執(zhí)行相關(guān)指令。

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2015-09-02 09:01:03

2015-09-22 14:49:41

網(wǎng)絡(luò)安全技術(shù)周刊

2020-08-10 08:37:32

漏洞安全數(shù)據(jù)

2019-02-27 13:58:29

漏洞緩沖區(qū)溢出系統(tǒng)安全

2017-01-09 17:03:34

2022-08-09 08:31:40

C -gets函數(shù)漏洞

2011-11-15 16:00:42

2011-03-23 12:39:44

2014-07-30 11:21:46

2018-01-26 14:52:43

2011-03-23 11:35:00

2020-10-27 09:51:18

漏洞

2009-09-24 18:16:40

2010-09-29 15:59:04

2011-02-24 09:21:31

2017-07-04 17:09:10

Map環(huán)形緩沖區(qū)數(shù)據(jù)

2010-12-27 10:21:21

2017-08-30 20:49:15

2021-01-27 18:03:52

漏洞網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2022-05-07 08:27:42

緩沖區(qū)溢出堆棧
點贊
收藏

51CTO技術(shù)棧公眾號