• 您現在的位置是:首頁 >綜合 > 2023-07-22 05:30:42 來源:

    溢出攻擊的核心是(溢出攻擊法使用什么樣的原理)

    導讀 大家好,我是小小根,我來為大家解答以上問題。溢出攻擊的核心是,溢出攻擊法使用什么樣的原理很多人還不知道,現在讓我們一起來看看吧!1...

    大家好,我是小小根,我來為大家解答以上問題。溢出攻擊的核心是,溢出攻擊法使用什么樣的原理很多人還不知道,現在讓我們一起來看看吧!

    1、緩沖區溢出攻擊之所以成為一種常見的攻擊手段,其原因在于緩沖區溢出漏洞太普通了,并且易于實現。

    2、而且,緩沖區溢出所以成為遠程攻擊的主要手段,其原因在于緩沖區溢出漏洞給予了攻擊者所想要的一切:殖入并且執行攻擊代碼。

    3、被殖入的攻擊代碼以一定的權限運行有緩沖區溢出漏洞的程序,從而得到被攻擊主機的控制權。

    4、 緩沖區是內存中存放數據的地方。

    5、在程序試圖將數據放到機器內存中的某一個位置的時候,因為沒有足夠的空間就會發生緩沖區溢出。

    6、而人為的溢出則是有一定企圖的,攻擊者寫一個超過緩沖區長度的字符串,植入到緩沖區,然后再向一個有限空間的緩沖區中植入超長的字符串,這時可能會出現兩個結果:一是過長的字符串覆蓋了相鄰的存儲單元,引起程序運行失敗,嚴重的可導致系統崩潰;另一個結果就是利用這種漏洞可以執行任意指令,甚至可以取得系統root特級權限。

    7、 緩沖區是程序運行的時候機器內存中的一個連續塊,它保存了給定類型的數據,隨著動態分配變量會出現問題。

    8、大多時為了不占用太多的內存,一個有動態分配變量的程序在程序運行時才決定給它們分配多少內存。

    9、如果程序在動態分配緩沖區放入超長的數據,它就會溢出了。

    10、一個緩沖區溢出程序使用這個溢出的數據將匯編語言代碼放到機器的內存里,通常是產生root權限的地方。

    11、僅僅單個的緩沖區溢出并不是問題的根本所在。

    12、但如果溢出送到能夠以root權限運行命令的區域,一旦運行這些命令,那可就等于把機器拱手相讓了。

    13、造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。

    14、例如下面程序: example1.c void func1(char *input) { char buffer[16]; strcpy(buffer, input); } 上面的strcpy()將直接吧input中的內容copy到buffer中。

    15、這樣只要input的長度大于16,就會造成buffer的溢出,使程序運行出錯。

    16、存在像strcpy這樣的問題的標準函數還有strcat(),sprintf(),vsprintf(),gets(),scanf(),以及在循環內的getc(),fgetc(),getchar()等。

    17、 當然,隨便往緩沖區中填東西造成它溢出一般只會出現Segmentation fault 錯誤,而不能達到攻擊的目的。

    18、最常見的手段是通過制造緩沖區溢出使程序運行一個用戶shell,再通過shell執行其他命令。

    19、如果該程序屬于root且有suid權限的話,攻擊者就獲得了一個有root權限的shell,便可以對系統進行任意操作了。

    本文到此講解完畢了,希望對大家有幫助。

  • 成人app