zoukankan      html  css  js  c++  java
  • 关于溢出的总结1

      溢出漏洞是一种计算机程序的可更正性缺陷,全名为“缓冲区溢出漏洞”,由程序中某个或某些输入函数对接收数据的边界验证不严密造成的。
      通过数组越界的操作解析缓冲区溢出漏洞。
    程序:越界访问值(工具:vs2008)
    #include <stdio.h>
    #include <stdlib.h>
    int main(){
        int a[20];
        int i;
     
        for (i=0;i<20;i++)
            a[i]=i*2;
     
        printf("a[20]=%d ",a[20]);
     
        system("pause");
        return 0;
    }
    在printf("a[20]=%d ",a[20]);处下断点,调试执行。程序为a[0]-a[19]赋了值,a[20]处于数组外,尝试读取其值。查看EBP=00CEFED0,[EBP-4]=cccccccc,它即为a[20]的值。
    退出调试,执行代码,可见a[20]的值为-858993460,使用计算器,可知其16进制为cccccccc,符合预期。
    程序:越界赋值(工具:vs2008)
    #include <stdio.h>
     
    int main(){
        int a[20];
        int i;
     
        for (i=0;i<20;i++)
            a[i]=i*2;
     
        a[20]=1;
        printf("a[20]=%d ",a[20]);
     
        system("pause");
        return 0;
    }
    分别在a[20]=1;和printf("a[20]=%d ",a[20]);加断点,调试执行。
    第一次停留后,EBP=0030FEB0,搜索这个地址,可见内容,【EBP-4】=cccccccc。
    执行此语句,可见【EBP-4】=1,成功越界赋值。
     
     
     
  • 相关阅读:
    [CF600E]Lomsat gelral
    [BZOJ3237]连通图
    [CF580D]Kefa and Dishes
    [BZOJ4726]Sabota?
    bzoj2120&&2453 -- 带修改莫队
    bzoj4726 [ POI2017 ] -- 树形DP
    bzoj2809 [ APIO2012 ] -- 主席树
    bzoj4216 -- 分块
    bzoj4173 -- 欧拉函数
    bzoj2982 -- Lucas定理
  • 原文地址:https://www.cnblogs.com/HYWZ36/p/10298609.html
Copyright © 2011-2022 走看看