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

    缓冲区溢出漏洞实验
    一、实验目的:

    1. 什么是缓冲区溢出?

      • 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。
    2. 缓冲区溢出的后果?

      • 这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。
    3. 缓冲区溢出的原因?

      • 这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

    二、实验步骤:

    1. 安装用于编译 32 位 C 程序的软件包
    2. 初始设置
    3. shellcode
    4. 漏洞程序
    5. 攻击程序
    6. 攻击结果

    三、实验内容:

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

    建议直接下载代码wget http://labfile.oss.aliyuncs.com/courses/231/exploit.c

    • 注意:x??x??x??x?? 处需要添上 shellcode 保存在内存中的地址,因为发生溢出后这个位置刚好可以覆盖返回地址。

    • 计算方法: strcpy(buffer+100,shellcode) 这一句告诉我们,shellcode 保存在 buffer + 100 的位置。

    • gdb调试
      gdb stack
      disass main

    • 设置断点
      # 设置断点 b *0x080484ee r i r $esp

    • 编译 exploit.c 程序
      gcc -m32 -o exploit exploit.c

    1. 观察攻击结果
    • 先运行攻击程序 exploit,再运行漏洞程序 stack,观察结果!

    • 攻击成功:

    • 攻击失败——“段错误”:

      注意:如果不能攻击成功,提示”段错误“,那么请重新使用 gdb 反汇编,计算内存地址。

    四、实验心得体会:

    1. 已经初步懂得缓冲区溢出攻击的基本原理和步骤,在编程中应该养成良好的编程习惯,降低被攻击的风险。

    2. 实验难度较高,虽然有步骤教学,但还是进行了长达四个小时的三次实验进行,遇到了各种各样的问题,在查阅大量资料和询问同学后才将实验做完。

    3. 只要愿意花费时间,愿意下功夫,就能把实验做完、做好。

    4. 在学习过程中要擅于询问老师和同学,更要学会如何查阅相关资料,帮助自己更好地解决问题。

  • 相关阅读:
    对于JavaScript中this关键字的理解
    使用DOM对表格进行增删
    sql server 存储过程
    sql sever 基础 练习题
    sql sever 基础 建表
    第十章 嵌入式的Linux调试技术
    第九章 硬件抽象层 HAL
    第八章 蜂鸣器驱动
    LED:控制发光二极管
    第一个Linux驱动程序:统计单词个数
  • 原文地址:https://www.cnblogs.com/baiyun-0722/p/13792015.html
Copyright © 2011-2022 走看看