Canary保護機制(棧保護)的開啟與關閉

2021-10-24 09:45:32 字數 674 閱讀 7424

這個選項表示棧保護功能有沒有開啟。

棧溢位保護是一種緩衝區溢位攻擊緩解手段,當函式存在緩衝區溢位攻擊漏洞時,攻擊者可以覆蓋棧上的返回位址來讓shellcode能夠得到執行。當啟用棧保護後,函式開始執行的時候會先往棧裡插入cookie資訊,當函式真正返回的時候會驗證cookie資訊是否合法,如果不合法就停止程式執行。攻擊者在覆蓋返回位址的時候往往也會將cookie資訊給覆蓋掉,導致棧保護檢查失敗而阻止shellcode的執行。在linux中我們將cookie資訊稱為canary。

gcc在4.2版本中新增了-fstack-protector和-fstack-protector-all編譯引數以支援棧保護功能,4.9新增了-fstack-protector-strong編譯引數讓保護的範圍更廣。

因此在編譯時可以控制是否開啟棧保護以及程度,例如:

gcc -o test test.c // 預設情況下,不開啟canary保護

gcc -fno-stack-protector -o test test.c //禁用棧保護

gcc -fstack-protector -o test test.c //啟用堆疊保護,不過只為區域性變數中含有 char 陣列的函式插入保護**

gcc -fstack-protector-all -o test test.c //啟用堆疊保護,為所有函式插入保護**

棧溢位的幾種保護機制

說明 當啟用棧保護後,函式開始執行的時候會先往棧裡插入cookie資訊,當函式真正返回的時候會驗證cookie資訊是否合法,如果不合法就停止程式執行。攻擊者在覆蓋返回位址的時候往往也會將cookie資訊給覆蓋掉,導致棧保護檢查失敗而阻止shellcode的執行。在linux中我們將cookie資訊稱...

TCP Wrappers保護機制

簡單介紹方式1 通過tcpd主程式對其他服務程式進行包裝 方式2 由其他服務程式呼叫libwrap.so.鏈結庫 etc hosts allow 允許 etc hosts deny 拒絕 流程圖 由此可見,etc hosts.allow檔案的優先順序更高,若同一ip位址即出現在hosts allow...

程式保護機制

3.堆保護 nx 傳統的堆漏洞攻擊會覆蓋對塊首部,並檢視建立乙個偽造的塊,當記憶體釋放例程執行時可以使用該塊在任意記憶體位址處寫入任意4個位元組。具體為 4.dep nx dep data execution prevention 即資料執行保護,阻止存放在堆 棧或資料記憶體中的 執行,這一直以來都...