zoukankan      html  css  js  c++  java
  • 缓冲区溢出漏洞实验

    一、实验原理

    缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况,在上一学期的信息安全概论实验课程中我们就已经了解相关的内容。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

    二、实验过程

    1.准备环境

    打开指定网址进入学习界面,用该界面的环境进行缓冲区溢出的相关实验,输入命令安装一些用于编译 32 位 C 程序的软件包:


    关闭地址随机化后,linux 系统中,/bin/sh 实际是指向 /bin/bash 或 /bin/dash 的一个符号链接。为了重现这一防护措施被实现之前的情形,我们要使用另一个 shell 程序(zsh)代替 /bin/bash,并在32位环境中使用bash:

    2.编辑漏洞

    在 /tmp 目录下新建一个 stack.c 文件并进行编译:
    编译该程序,并设置 SET-UID:

    3.编辑攻击程序

    在 /tmp 目录下新建一个 exploit.c 文件:

    进行gdb调试并str 的起始地址:

    在地址 0x080484ee 处设置断点:

    最后获得的这个 0xffffd4c0 就是 str 的地址。
    根据语句 strcpy(buffer + 100,shellcode); 我们计算 shellcode 的地址为 0xffffd4c0 + 0x64 = 0xffffd524,再修改 exploit.c 文件,将 x??x??x??x?? 修改为计算的结果 x24xd5xffxff:

    4.实验结果

    编译 exploit.c 程序,再运行攻击程序 exploit,再运行漏洞程序 stack:

    攻击成功,获得了root权限。

  • 相关阅读:
    ecshop 调用指定分类的推荐,热卖,新品
    ecshop 首页调用指定类产品
    html常用笔记
    ecshop 修改flash图片大小
    ecshop 删除随机版权
    Java Web(一) Servlet详解!!
    Git使用总结
    git clone命令使用
    Lucene学习总结之四:Lucene索引过程分析
    Lucene学习总结之二:Lucene的总体架构
  • 原文地址:https://www.cnblogs.com/20191211yss/p/15478881.html
Copyright © 2011-2022 走看看