X64之ROP

X64架构下的栈溢出与ROP技术解析
本文详细介绍了X64架构下利用栈溢出漏洞构造ROP链以获取shell的过程。通过分析程序,找到栈溢出点,然后利用gadget(如pop rdi ; ret)设置参数,通过相对偏移计算获取system和/bin/sh的地址,最终实现getshell。文章强调了X64与X86在传参规则上的区别,并展示了构造payload的脚本步骤。
   实验步骤:
  1. 首先拿到文件先看看有没有什么栈保护在这里插入图片描述
    因为在生成文件的时候我们就已经关掉了地址随机化,所以这里并没有什么栈保护

  2. 将文件拖入IDA中进行反编译,然后静态分析

在这里插入图片描述
这里有先写入hello world ,然后又进入了vulnerable_function函数,我们进入函数看看
在这里插入图片描述

我们发现用到了read函数,这里用到的是rbp定位,而它读了200个,实际rbp到ret只有(80+8)h的空间,很显然存在栈溢出漏洞,那我们下面要做的和以往一样,泄露system和bin_sh地址,然后通过ROP链getshell

  1. x64与x86的区别 因为64位程序的传参规则变了,所以我们的rop也要进行相应变动。
    在原来的32位程序中我们会直接将目标函数的入口地址和相应的参数放在payload中,最后进行rop时,参数是根据与ebp的相对位置来进行确定的。
    而在64位程序中,我们不仅要将目标函数的入口地址和相应参数放在payload中,同时还要插入一些gadget,将参数放入相应的寄存器中,从而达到传参的目的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值