緩衝區溢出攻擊(Buffer Overflows實驗筆記)

緩衝區溢出是什麼?

緩衝區溢出是指當計算機向緩衝區內填充數據位數時超過了緩衝區本身的容量溢出的數據在合法數據上,理想的情況是程序檢查數據長度並不允許輸入超過緩衝區長度的字符,但是絕大多數程序都會假設數據長度總是與所分配的儲存空間相匹配,這就爲緩衝區溢出埋下隱患,操作系統所使用的緩衝區,又被稱爲"堆棧"。在各個操作進程之間,指令會被臨時儲存在"堆棧"當中,"堆棧"也會出現緩衝區溢出。

緩衝區溢出攻擊及其原理:

通過往程序的緩衝區寫超出其長度的內容,造成緩衝區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。造成緩衝區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。
這也是稍後做題的突破原理,緩衝區漏洞普遍並且易於實現,緩衝區溢出成爲遠程攻擊的主要手段其原因在於緩衝區溢出漏洞給予了攻擊者他所想要的一切:植入並且執行攻擊代碼。被植入的攻擊代碼以一定的權限運行有緩衝區溢出漏洞的程序,從而得到被攻擊主機的控制權。
大多數的緩衝溢出攻擊都是通過改變程序運行的流程到入侵者植入的惡意代碼,其主要目的是爲了獲取超級用戶的shell。
原理相當簡單:將惡意指令存放在buffer中,這段指令可以得到 進程的控制權,從而達到攻擊的目的。

檢測:

(目前我的知識域只瞭解這個,學成歸來再補充)
Kali Linux提供的BED工具(Bruteforce Exploit Detector)是一款緩存區漏洞檢測工具。
BED通過加載插件,向目標主機發送攻擊數據。如果發現目標無法響應,說明目標可能存在溢出區漏洞。經過多次測試驗證,就可以判斷漏洞出現的位置。然後手工執行驗證,代碼審覈、反編譯的方式等方式,就可以找出漏洞具體觸發機制,從而加以利用。
先完成實驗再說叭:
在這裏插入圖片描述
第一步可以隨便填寫,不用任何操作,進入第二步:
在這裏插入圖片描述
哦豁,這裏要攔截了我不想花錢
在這裏插入圖片描述
看到這些參數,傳到intruder。將room_no設爲溢出目標:
在這裏插入圖片描述
如圖,先清掉所有參數的$,然後在name_no加上就OK。攻擊類型:

在這裏插入圖片描述
在這裏插入圖片描述
payload類型選擇字符填充,然後開始攻擊:
在這裏插入圖片描述
說明什麼?現在我是查詢的最大值都還沒有溢出,說明我太小氣設置值太小了,重新來一遍,將一些測試的值設置大一點;
在這裏插入圖片描述
再執行,查看length最長的響應如圖,說明已經溢出了,copy放包就會恭喜你了:
在這裏插入圖片描述

那防禦方法呢?

緩衝區溢出攻擊佔了遠程網絡攻擊的絕大多數,這種攻擊可以使得一個匿名的Internet用戶有機會獲得一臺主機的部分或全部的控制權。如果能有效地消除緩衝區溢出的漏洞,則很大一部分的安全威脅可以得到緩解。
有四種基本的方法保護緩衝區免受緩衝區溢出的攻擊和影響。
1.通過操作系統使得緩衝區不可執行,從而阻止攻擊者植入攻擊代碼。
2.強制寫正確的代碼的方法。
3.利用編譯器的邊界檢查來實現緩衝區的保護。這個方法使得緩衝區溢出不可能出現,從而完全消除了緩衝區溢出的威脅,但是相對而言代價比較大。
4.一種間接的方法,這個方法在程序指針失效前進行完整性檢查。雖然這種方法不能使得所有的緩衝區溢出失效,但它能阻止絕大多數的緩衝區溢出攻擊。分析這種保護方法的兼容性和性能優勢。
這四種方法也只是問的度娘,今後我會自己總結防禦方法,補充筆記!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章