資料介紹
對于為何要保護堆棧,請以“緩沖區溢出”,“堆棧”為關鍵詞google一下,本文不再贅述。只要你的程序要調用函數,那么就要使用堆棧,不進行函數調用的程序已經很少了吧,難道你能忍受通篇的jmp,jne.。。等等手工作坊的方法嗎?在linux和windows 上,保護棧的方式最重要的莫過于兩種, 一個是使用堆棧安全cookie;另一個是使棧不可執行。
上面提到的兩種方式中,安全cookie提供了更大的保護,而不可執行棧在遇到溢出代碼放到堆的時候就很難奏效了,先看看安全cookie是怎么一回事。 在傳統的函數調用時,棧自下而上是:參數--》返回地址--》老的棧底指針--》局部變量--》。。.如果局部變量發生向下溢 出,覆蓋了函數的返回地址,那么程序一點脾氣也沒有,乖乖聽任你的擺布,但是這種錯誤的行為是在被調函數返回的時候發生的,如果被調函數有漏洞,那么我們希望的是在它返回的時候,也就是出了它的控制范圍的時候主動地報出錯誤,而不是將錯就錯,那么就需要一種有效的方式來檢測到錯誤的發生,于是安全 cookie就臨危受命了,它實際上就是在參數--》返回地址--》老的棧底指針--》局部變量--》。。.中間插入了一個 cookie,使得這個結構變為了參數--》返回地址--》老的棧底指針--》cookie--》局部變量--》。。.這 個cookie是每個程序映像都有的一個數值,最好就是一個隨機值,當函數調用的時候,編譯器自動插入(編譯的時候編譯器知道何時進行函數調用,比如 call)一個cookie,這個cookie在程序啟動的時候被初始化為隨機值(如果不是隨機值,我們考慮最極端的情況,比如就是1,那么攻擊者就知道 把kookie的位置覆蓋為1就不會導致cookie 檢查失敗了),當程序返回的時候系統會檢查堆棧的cookie和程序的cookie是否一致,如果不 一致,那么就報錯。
以上的方式很不錯嗎?考慮一下以下的問題:如果攻擊者知道程序的cookie所存放的位置,那么他就會知道cookie的值,于是他就知道應該將堆棧中 cookie位置的值覆蓋成什么,即使你將cookie的存放位置設為不可讀也不好,因為攻擊者總能通過各種淫亂的手段達到目的,試問你是保護 cookie函數保護函數返回值?另外一個問題:當cookie檢查失敗,該怎么辦?就算 cookie檢查失敗,緩沖區確實溢出,但是此時操作系統內核并 不知道發生的一切(前提是只要別溢出到內核空間),于是想讓系統在檢查失敗時就自動陷入內核是不可能的,一切必須手動進行,在用戶空間進行,如果想讓內核幫忙處理,就要手動進行陷入(x86種int指令),如果不需要內核處理就在用戶空間了斷,不管哪種方式,都要在檢查失敗后跳到一段代碼,我們姑且把它叫做異常處理代碼,那么問題來了,如果攻擊者將這段異常處理代碼攻擊了怎么辦,這不成了個怪圈了嗎?是的,這是個怪圈,緩沖區溢出錯誤既然發生,你就誰也別 怪,錯就錯在你的代碼寫的不嚴密有漏洞,指望緩沖區溢出檢查機制無論怎樣結果都是不可信的,記住,計算機系統中只有一種可信的軟件,就是操作系統內核(存在內核的前提下,當然不包括裸奔的單片機),而用戶空間的緩沖區溢出又沒有嚴重到內核必須接管的地步(它可沒有缺頁異常嚴重),既然用戶空間的任何機制都 不可信,那么你還指望所謂嚴密的緩沖區溢出檢查機制嗎?
- MOS管的電路符號詳細資料講解 49次下載
- 無人機的飛控系統詳細資料講解 75次下載
- 標準CANBUS協議鏈路的詳細資料講解 2次下載
- Arduino的語法詳細資料講解 4次下載
- Rockchip Linux SDK的開發指南的詳細資料說明 74次下載
- Linux的使用基礎詳細資料說明 15次下載
- 51單片機的int相關數據類型問題的詳細資料講解
- Proteus元器件封裝的詳細資料講解 0次下載
- STM8 GPIO入門的詳細資料講解筆記免費下載 23次下載
- Linux的封裝庫文件詳細資料合集免費下載 9次下載
- 使用Linux進行GPS的衛星信號欺騙源碼詳細資料免費下載 8次下載
- Linux入門教程之Linux的基本操作詳細資料說明 14次下載
- 如何在Linux下如何刪除大量文件的詳細資料概述 7次下載
- linux教程之Linux系統的安裝與啟動詳細資料 7次下載
- 嵌入式linux開發詳細資料 3次下載
- linux和windows的區別 linux系統一般用來干嘛 657次閱讀
- Windows與Linux之間相互傳輸文件的方法 4798次閱讀
- RS232接口串口取電電路的詳細資料介紹 7863次閱讀
- Linux操作系統知識講解:走進Linux 內存分配算法 5323次閱讀
- Linux操作系統知識講解:走進linux 內存地址空間 4903次閱讀
- Linux桌面虛擬化技術KVM的詳細資料說明 4315次閱讀
- 如何新建一個軟件工程詳細資料講解 3024次閱讀
- 如何進行PLC控制程序的設計詳細資料PPT說明 5753次閱讀
- 庫卡機器人模擬量輸入輸出編程的詳細資料概述 6623次閱讀
- PPT教程之伺服電機及其驅動技術的詳細資料講解 6981次閱讀
- 詳細的繼電保護基礎知識講解 1.3w次閱讀
- PLC常用基本環節梯形圖和詳細文字說明詳細資料概述 8957次閱讀
- 變壓器保護的基本要求,保護配置和運行規定的詳細資料概述 8474次閱讀
- Windows和Linux的區別以及Linux系統的目錄結構 8392次閱讀
- Linux系統軟件加殼保護技術的改進設計 1366次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多