bofe4sy直接 bof return 到 win 就行:
exploit.py:
1234567891011└─$ cat exploit.pyfrom pwn import *r = process('./bofe4sy'...
pass這題直接 r2 看一下 main 的這兩個地方:
控好 var_4h 就結束了,exploit.py:
12345678from pwn import *r = process('./pass')p = b'...
gohome執行看一下:
他說要找他家的地址:
找到他家了,內容是直接在 shell 印出我們的 flag,補上一個 return 對齊一下,exploit.py:
12345678910111213141516└─$ cat exploit.p...
echo_serverlevel1 的題目就不解釋太多了w,先執行看一下:
checksec:
r2:
1234└─$ ROPgadget --binary ./echo_server --string '/bin/sh'S...
luck這題的目標是符合一系列的條件之後他就會發一個 shell 給我們,具體條件和區域變數如下:
應該蠻淺顯易懂的 XD,直接上 exploit.py:
12345678910111213141516171819from pwn import...
ret2libc基本上每個新的技術就是為了解決一個新的保護機制,那 ret2libc 主要就是能 bypass ASLR,那廢話不多說我們來整理一下這次的計畫:
source code 基本上和上一題 ret2plt 差不多,但這次沒有 system...
ret2pltr2 看一下 main:
file 看一下:
因為是 dynamically linked,所以 gadget 會很少,可能不能直接拼出一個 shell,所以這題改用 ret2plt 的方式,計畫是找到可以控 rdi 的 gadge...
casino先執行看一下:
一樣假裝沒有 source code 來用 r2 分析一下 main 先:
首先 name 是全域變數,可以輸入 0x100 個 bytes,位址是 0x6020f0,age 也是全域變數,位址是 0x602104,再...
lab_rop1執行看一下:
file 看一下:
r2 看一下 main:
OK,首先他把第一個輸入讀到全域變數 obj.name,然後開了一個 0x10 的 buffer 但是讀了 0x100 個 bytes。那我們的計畫就是把 “/...
rop雖然有附 source,但我們假裝沒有 XD。來用 r2 看一下 main:
看到一個 0x30 的 buffer,用 gets 去讀,那我們就 rop 開一個 shell。用以下的指令來搜集需要的 gadget:
12ROPgadget -...