• 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,导致编译失败。

  • 相关阅读:
    (初学者)安装hadoop集群注意事项
    配置HADOOP_HOME
    修改用户所在组,修改文件的所有者,明明是自己的文件什么不能解压?
    方法被阻塞,一直要等到线程任务返回结果的例子
    Python复习笔记(一)高级变量类型
    我的vim插件配置
    vim使用笔记
    Linux命令(九)查找文件find
    Linux命令(八)Linux系统信息相关命令
    Linux命令(七)Linux用户管理和修改文件权限
  • 原文地址:https://www.cnblogs.com/5306xyh/p/9787264.html
Copyright © 2020-2023  润新知