栈溢出----基础rop

本文深入探讨栈溢出攻击的基础知识,包括常见危险函数、ret2text、ret2shellcode和ret2syscall等技术,涉及32位文件的保护机制和exploit编写。
摘要由CSDN通过智能技术生成

学习文献:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/basic_rop/

1. 栈溢出基本原理就不写了

列举一下常见的危险函数:

  • 输入
    • gets,直接读取一行,忽略'\x00'
    • scanf
    • vscanf
  • 输出
    • sprintf
  • 字符串
    • strcpy,字符串复制,遇到'\x00'停止
    • strcat,字符串拼接,遇到'\x00'停止
    • bcopy

2. 基础rop

ret2text

开启NX,无栈保护,32位文件

IDA中打开可以发现system以及/bin/sh,存在危险函数gets,直接修改ret

计算需要覆盖的偏移量

知道ebp和esp之后,结合s相对于esp的偏移量

exp

payload='a'*(0x6c+0x04)
cn.sendline(payload+p32(0x0804863A))
cn.interactive()

 

ret2shellcode

ret2shellcode,即控制程序执行 shellcode 代码。shellcode 指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的 shell。一般来说,shellcode 需要我们自己填充。这其实是另外一种典型的利用方法,即此时我们需要自己去填充一些可执行的代码

在栈溢出的基础上,要想执行 shellcode,需要对应的 binary 在运行时,shellcode 所在的区域具有可执行权限。

这是学习文献中的原话,链接上面有,之前我们看见有那个NX保护,也就是说相应区域的NX保护没开启,我们自己手动打shellcode来夺取权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值