• 2018-2019-1 20165306 《信息安全系统设计基础》第三周学习总结


    2018-2019-1 20165306《信息安全系统设计基础》第三周学习总结

    缓冲区溢出漏洞实验

    • 缓冲区溢出是指程序试图向缓冲区写入超出固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制。甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

    一、实验准备

    • 输入命令安装一些用于32位C程序的软件包

    二、实验步骤

    1.初始设置

    • Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆和栈的初始地址,使得猜测准确地内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。需关闭这一功能。

    • 为了进一步防范缓冲区溢出攻击及其他用shell程序的攻击,许多shell程序在被调用时自动放弃他们的特权。为了重现防护措施被实现之前的情形,使用另一个shell程序(zsh)代替/bin/bash

    2.shellcode

    • 一般情况下,缓冲区溢出会造成程序崩溃。在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是shellcode。

    3.漏洞程序

    • /tmp 目录下新建一个stack.c文件:

    • GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以在编译代码时需要用-fno-stack-protector关闭这种机制。而-z execstack用于允许执行栈。-g参数是为了使编译后得到的可执行文档能用gdb调试。

    4.攻击程序

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

    • 编译exploit.c 程序

    gcc -m32 -o exploit exploit.c

    代码调试中的问题和解决过程

    • FILE *badfile 误输成了File *badfile,导致编译失败。

  • 相关阅读:
    python 创建文件夹
    Python利用pandas处理Excel数据的应用
    解决git rebase操作后推送远端分支不成功的问题
    LeetCode 1 两数之和
    LeetCode 70 爬楼梯
    LeetCode 11 盛水最多的容器
    LeetCode 283 移动零
    数据结构与算法 ---- 数组 -- Array
    跳表???
    自顶向下编程
  • 原文地址:https://www.cnblogs.com/5306xyh/p/9787264.html
Copyright © 2020-2023  润新知