色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 緩沖區(qū)溢出指的是什么

緩沖區(qū)溢出指的是什么 時間:2018-12-28      來源:華清遠(yuǎn)見

緩沖區(qū)溢出,是針對程序設(shè)計缺陷,向程序輸入緩沖區(qū)寫入使之溢出的內(nèi)容(通常是超過緩沖區(qū)能保存的最大數(shù)據(jù)量的數(shù)據(jù)),從而破壞程序運行、趁著中斷之際并獲取程序乃至系統(tǒng)的控制權(quán)。

計算機(jī)程序一般都會使用到一些內(nèi)存,這些內(nèi)存或是程序內(nèi)部使用,或是存放用戶的輸入數(shù)據(jù),這樣的內(nèi)存一般稱作緩沖區(qū)。溢出是指盛放的東西超出容器容量而溢出來了,在計算機(jī)程序中,就是數(shù)據(jù)使用到了被分配內(nèi)存空間之外的內(nèi)存空間。而緩沖區(qū)溢出,簡單的說就是計算機(jī)對接收的輸入數(shù)據(jù)沒有進(jìn)行有效的檢測(理想的情況是程序檢查數(shù)據(jù)長度并不允許輸入超過緩沖區(qū)長度的字符),向緩沖區(qū)內(nèi)填充數(shù)據(jù)時超過了緩沖區(qū)本身的容量,而導(dǎo)致數(shù)據(jù)溢出到被分配空間之外的內(nèi)存空間,使得溢出的數(shù)據(jù)覆蓋了其他內(nèi)存空間的數(shù)據(jù)。

在計算機(jī)安全領(lǐng)域,緩沖區(qū)溢出就好比給自己的程序開了個后門,這種安全隱患是致命的。緩沖區(qū)溢出在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在。而利用緩沖區(qū)溢出漏洞實施的攻擊就是緩沖區(qū)溢出攻擊。緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運行失敗、系統(tǒng)關(guān)機(jī)、重新啟動,或者執(zhí)行攻擊者的指令,比如非法提升權(quán)限。通過往程序的緩沖區(qū)寫超出其長度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,造成程序崩潰或使程序轉(zhuǎn)而執(zhí)行其它指令,以達(dá)到攻擊的目的。造成緩沖區(qū)溢出的原因是程序中沒有仔細(xì)檢查用戶輸入的參數(shù)。

下面通過一個示例來詳細(xì)看看什么是緩沖區(qū)溢出。程序的緩沖區(qū)就像一個個格子,每個格子中存放不同的東西,有的是命令,有的是數(shù)據(jù),當(dāng)程序需要接收用戶數(shù)據(jù),程序預(yù)先為之分配了4個格子(下圖中黃色的1~4號格子)。按照程序設(shè)計,就是要求用戶輸入的數(shù)據(jù)不超過4個。而用戶在輸入數(shù)據(jù)時,假設(shè)輸入了17數(shù)據(jù),而且程序也沒有對用戶輸入數(shù)據(jù)的多少進(jìn)行檢查,就往預(yù)先分配的格子中存放,這樣不僅4個分配的格子被使用了,其后相鄰的13個格子中的內(nèi)容都被新數(shù)據(jù)覆蓋了。這樣原來13個格子中的內(nèi)容就丟失了。這時就出現(xiàn)了緩沖區(qū)(1~4號格子)溢出了。

緩沖區(qū)溢出

如下代碼的問題就出在strcpy(buf, s)這條語句上,它將s拷貝到buf中,而沒有對s的長度進(jìn)行限制,這就給緩沖區(qū)溢出攻擊提供了可乘之計。

#include 

#include 

void vulFunc(char* s)

{

    char buf[10];

    strcpy(buf, s);

    printf("String=%s\n", buf);

}

 

main(int argc, char* argv[])

{

     if(argc == 2)

     {   

           vulFunc(argv[1]);

     }

   else

   {

      printf("Usage: %s \n", argv[0]);

   }

}

緩沖區(qū)溢出一般是由于一下原因?qū)е拢?/p>

1.字符串處理函數(shù)沒有指定長度,單單憑借結(jié)尾字符是不是'\0'來判斷結(jié)束。

2.被處理的字符超過緩沖區(qū)可接受的大小。例如,從屏幕輸入字符串:gets(buff),但是buff的內(nèi)存少于屏幕一行字符個數(shù),就會導(dǎo)致溢出,應(yīng)該使用fgets。

3.所有格式化字符串的函數(shù):fprintf("%n",&num_write)。

避免的辦法:

1.不要把用戶的輸入作為參數(shù)傳到格式化字符串處理函數(shù)中,例如,printf("%s", argv[1])。

2.字符串處理避免使用strcpy,strcat,sprintf,gets。應(yīng)該使用strncpy,strncat,snprintf。strlcpy和strlcat都是NULL結(jié)尾。盡量使用std::string,MFC::CString

3.使用C++ I/O函數(shù)

4.使用安全的C Runtime Time函數(shù)

5.檢查文件路徑的長度,不要超過系統(tǒng)允許的最大值。

上一篇:什么是字符串?dāng)?shù)組

下一篇:ARM工程師是做什么的?需要掌握什么技能?

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 91成人在线播放| 最新日韩中文字幕| 成人免费淫片视频软件| 日本乱人伦a精品| 国产精品色午夜在线观看| 成人观看高清在线观看免费| 国产欧美精品xxxx另类| 成人免费自拍视频| 亚洲级视频在线观看免费1级| 日韩电视剧免费观看网站| 亚洲偷欧美偷国内偷| 久久久精品999| 欧美高清第一页| 青青草成人在线| 亚洲一区二区久久久久久| 国产香蕉97碰碰久久人人| 久久精品亚洲精品| 国内免费久久久久久久久久久| 国产98色在线| 日韩精品免费观看| 精品国产乱码久久久久酒店| 97成人超碰免| 亚洲精品乱码久久久久久金桔影视| 自拍偷拍亚洲一区| 高清欧美性猛交xxxx| 国产拍精品一二三| 日韩中文字幕在线看| 午夜精品在线观看| 亚洲第一中文字幕| 欧美成人在线免费视频| 国产精品高潮呻吟久久av黑人| 亚洲免费人成在线视频观看| 欧美性极品xxxx做受| 国产区亚洲区欧美区| 久久精品青青大伊人av| 欧美孕妇性xx| 国产亚洲欧美另类中文| 国内精品免费午夜毛片| 精品一区精品二区| 亚洲2020天天堂在线观看| 亚洲九九九在线观看|