Ctf-Pwn-基本的保護機制與繞過方法(在更)


程序開啟的保護機制我們可以通過 pwntools 自帶的 checksec 來檢查出來。

(bugkuctf-pwn2-開啟的保護機制)

1.Canary

  Canary, 金絲雀。金絲雀原來是石油工人用來判斷氣體是否有毒。而應用於在棧保護上則是在初始化一個棧幀時在棧底(stack overflow 發生的高位區域的尾部)設置一個隨機的 canary 值,當函數返回之時檢測 canary 的值是否經過了改變,以此來判斷 stack/buffer overflow 是否發生,若改變則說明棧溢出發生,程序走另一個流程結束,以免漏洞利用成功。 因此我們需要獲取 Canary 的值,或者防止觸發 stack_chk_fail 函數,或是利用此函數。

2.ALSR

  Address space layout randomization,地址空間布局隨機化。通過將數據隨機放置來防止攻擊。

3.Relro

  Relocation Read Only, 重定位表只讀。重定位表即.got 和 .plt 兩個表。

4.NX

  Non-Executable Memory,不可執行內存。了解 Linux 的都知道其文件有三種屬性,即 rwx,而 NX 即沒有 x 屬性。如果沒有 w 屬性,我們就不能向內存單元中寫入數據,如果沒有 x 屬性,寫入的 shellcode 就無法執行。所以,我們此時應該使用其他方法來 pwn 掉程序,其中最常見的方法為 ROP (Return-Oriented Programming 返回導向編程),利用棧溢出在棧上布置地址,每個內存地址對應一個 gadget,利用 ret 等指令進行銜接來執行某項功能,最終達到 pwn 掉程序的目的。

5.PIE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM