PWN入门系列(2)ROP

本文是PWN入门系列的第二篇,深入介绍了如何利用Return Oriented Programming(ROP)绕过NX保护。文章详细解释了gadgets的概念,列举了ROP攻击的必要条件,并通过一个ret2text的实例展示了如何构造payload来控制程序执行流程,最终获取shell。
摘要由CSDN通过智能技术生成

PWN入门系列(2)ROP

基本ROP

在上一篇博客中我们介绍了在ELF文件经过checksec查看保护措施后,有一个叫做NX的保护措施,即数据执行保护,在此保护措施开启后,很难直接向栈或者堆上直接注入代码,所以攻击者得想办法绕过NX的保护机制,而ROP(Return Oriented Programming)就是主要的绕过措施,主要的思想是在栈缓冲溢出的基础上,利用程序中已经有的小片段,也被称作(gadgets)来改变某些寄存器或者变量的值,进而达到控制程序的执行流程。那么什么是gadgets呢?

gadgets

gadgets就是以ret结尾的指令序列,通过这些指令序列,我们可以改变地址的内容,方便进行控制程序。

ROP的攻击条件

  • 程序存在溢出,并且可以控制返回地址。

可以找到满足条件的gadgets
来讲一个典型的例子:

ret2text

原理

ret2text 即控制程序执行程序本身已经有的代码(.text).也可以控制程序执行多段不相邻的程序(gadgets),这就是我们说的ROP
此时,代码返回的位置就很重要了。

例子

这个例子相信接触过PWN的师傅们都见过,是bamboofox师傅中介绍ROP用的例子,
现提供源程序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值