zoukankan      html  css  js  c++  java
  • 缓冲区溢出

    (一)实验内容
    1、理解缓冲区溢出的基本原理。
    2、利用函数strcpy()编程实现一个简单的缓冲区溢出实例。
    3、总结预防缓冲区溢出的方法。
    (二)实验验证原理
    1、缓冲区溢出:缓冲区溢出是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。
    2、C语言编程中,一些不作边界检查的字符串拷贝函数(如strcpy)容易造成缓冲区溢出。
    (三)实验代码

    #include <stdio.h>
    int main(int argc, char *argv[])
    {
        char sz1[8];
        char sz2[8];
        memset(sz1,0x00,sizeof(sz1));
        strcpy(sz1,"hello");
        printf("sz1=[%s]
    ",sz1);
        while(1)
        {
            memset(sz2,0x00,sizeof(sz2));
            printf("please input passwd:
    "); 
            scanf("%s",sz2);
            printf("---sz1=[%s]
    ",sz1);
            printf("---sz2=[%s]
    ",sz2);
            if(0 == strcmp(sz1,sz2))
            {            
                printf("----hello world-----
    ");
                break;
            }
            else
            {
                printf("----ERROR----
    ");
                continue;
            }
        }
        return 0;
    }
    

    (四)实验过程
    正常输入:

    错误输入:

    溢出输入:

    (五)预防缓冲区溢出方法:
    在编写程序过程中,程序员有责任和义务养成安全编程的思想,应该熟悉那些可能会产生漏洞或需慎用的函数,清楚那些在编程中要小心使用的函数(特别是在使用C语言时),例如:gets()、strcpy()等等。在软件测试阶段,要专门对程序中的每个缓冲区作边界检查和溢出检测。同时,还应该添加保护,让攻击者无法执行缓冲区内的命令。但是,由于程序编写者的经验不足和测试工作不够全面、充分,目前还不可能完全避免缓冲区溢出漏洞,因此这些漏洞在已经使用以及正在开发的软件中还是有存在的可能,还需要在使用软件时,对它做实时的监测。

  • 相关阅读:
    总结php删除html标签和标签内的内容的方法
    php正则验证手机、邮箱
    php正则匹配到字符串里面的a标签
    PHP 使用try catch,捕获异常
    Apache漏洞利用与安全加固实例分析
    php json接口demo
    PHP 把MYSQL重复ID 二维数组重组为三维数组
    文件扩展关联命令(assoc)
    修改文件属性(attrib)
    文件比较命令(fc)
  • 原文地址:https://www.cnblogs.com/wzwyoshino/p/15489820.html
Copyright © 2011-2022 走看看