简单rip解题思路及步骤

本文详细描述了一次利用栈溢出漏洞在靶机上执行攻击脚本的过程,包括下载pwn文件、使用IDA反编译、确定gets函数覆盖范围、构造payload并连接远程服务器,最终获取flag文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先打开靶机,下载所需pwn文件,并将其载入虚拟机中。

2.在虚拟机中打开终端,输入checksec pwn1 对文件进行检查分析。

3.发现是64位的ELF文件,用ida进行反编译。出现汇编代码,按F5键转变为C语言代码。

4.发现gets函数,其存在栈溢出漏洞,利用其特性可以编写攻击脚本进行远程操控,找到我们想要的flag文件。在此之前,需要找到gets函数的覆盖内容大小,其大小包括gets函数本身范围加上return之上的ebp大小,所以接下来,找到ida反编译的C语言代码中,双击gets函数的地址&s,出现下图。

5.从图中可以看出,r对应的字节数为8,及ebp的的大小;两个s之间从1到F这个距离是gets函数的范围大小,为F。因为是在十六进制下,所以上面所说的gets函数覆盖范围大小为0x8+0xF。

6.然后我们寻找返回值return函数的地址,在脚本中编写为我们想修改的代码。就要在ida中点击fun函数,找到下方括号里的401186(同样也是十六进制下)。

7.创建攻击脚本。打开终端,输入vim  XXX.py。回车按i键插入随意内容,再按ctrl+c,回车再按:wq保存并退出。创建了XXX.py的脚本文件。

8.编写攻击脚本。

from pwn import*:导入pwn库;

r=remote:连接远程端口,及输入靶机上的端口信息;

getflag:输入所编写的我们想得到的返回值return;

payload:构建攻击载荷,由之前得到的gets函数覆盖范围大小和return函数的地址相加最后加上p64下的getflag+1(由于栈平衡要统一数据大小方便寄存器读取数据);

io.sendline:发送所求数据并回车;

io.interactive():交互数据并获得io控制权。

8.打开终端,输入python3 创建的文件名.py,回车,再按ls,交互成功,输入cat flag,得到flag文件。输入回靶机即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值