ctf pwn入門知識

2021-10-04 18:06:48 字數 889 閱讀 6238

ctf中的pwn指的是通過通過程式本身的漏洞編寫利用指令碼破解程式拿到主機的許可權

了解簡單的軟體防護技術:

棧保護:canary

堆疊不可執行:nx(no-execute)

位址隨機化:pie(position-independent executable, 位址無關可執行)或者叫alsr(address space layout randomization)

rop(return-oriented programming)技巧(還有jop, return to libc, got hook ……目標劫持控制流)

各種漏洞(一般針對linux系統)

兩大類:棧的漏洞(溢位), 堆的漏洞(更複雜)

printf 格式化字串漏洞

i/o file 漏洞

以攻防世界中入門hello_pwn為例

relro:relro會有partial relro和full relro,如果開啟full relro,意味著我們無法修改got表

stack:如果棧中開啟canary found,那麼就不能用直接用溢位的方法覆蓋棧中返回位址,而且要通過改寫指標與區域性變數、leak canary、overwrite canary的方法來繞過

nx:nx enabled如果這個保護開啟就是意味著棧中資料沒有執行許可權,以前的經常用的call esp或者jmp esp的方法就不能使用,但是可以利用rop這種方法繞過

pie:pie enabled如果程式開啟這個位址隨機化選項就意味著程式每次執行的時候位址都會變化,而如果沒有開pie的話那麼no pie (0x400000),括號內的資料就是程式的基位址

ctf pwn題目的部署

建議 使用最後一種方式部署 安裝apt install socat模板 socat tcp listen port,fork exec 程式名,reuseaddr 例項 socat tcp listen 10001,fork exec pwn1,reuseaddr 缺點 需要控制好許可權 存在各種風...

CTF pwn 位址洩露總結

個人基礎比較薄弱,做了好幾道題才勉強算是把位址洩露的利用方法掌握了。搞不好還有我不知道的 簡單說就是利用輸出函式 如write puts 將libc在記憶體中的基址洩露出來,從而呼叫libc中的其他函式。這裡需要知道的是程式裝載時的過程,具體在網上或各種講底層的書資料裡都有,重點是got表和plt表...

ctf pwn題之alarm函式

alarm 在解題中的妙用 總結 如上圖所示,在做一些pwn題的時候,我們有時會遇到alarm 0xau 函式。alarm函式中的引數0xau是十六進製制無符號數,即十進位制對應10,所以該函式的作用是在程式執行10秒後,給程序傳送sigalrm訊號,如果不另編寫程式接受處理此訊號,則預設結束此程式...