缓冲区溢出攻击已经存在了很长时间了。它仍然存在于今天,部分原因是程序员在编写代码时不小心。我所说的“部分”原因是因为有时编写好的代码可以利用缓冲区溢出攻击,因为这也取决于攻击者的奉献精神和智能级别。

方法/步骤

我们至少可以做的是避免编写不好的代码,从而有机会甚至脚本小孩攻击你的程序并利用它在这个缓冲区溢出教程中,我们将讨论以下的基础知识:

什么是缓冲区溢出?

如何发生缓冲区溢出?

如何发生缓冲区溢出攻击?

如何避免缓冲区溢出?

我们会保留解释和示例,使您完全了解这一概念。我们还将使用C编程语言来解释缓冲区溢出概念。

什么是缓冲区溢出?

在执行程序方面,缓冲区可以被认为是计算机主存储器的一个区域,它与引用此内存的程序变量在上下文中具有一定的界限。

例如 :

char buff [10]

在上面的例子中,“buff”表示10个字节的数组,其中buff [0]是左边界,buff [9]是缓冲区的右边界。

让我们举个例子:

int arr [10]

在上面的例子中,'arr'表示10个整数的数组。现在假设整数的大小是4字节,“arr”的总缓冲区大小是10 * 4 = 40字节。与第一个例子类似,arr [0]指的是左边界,而arr [9]是指右边界。

现在应该清楚一个缓冲区是什么意思。继续前进让我们了解缓冲区溢出时。

当数据(意图写入存储器缓冲器)被写入缓冲器的左边界或右边界时,缓冲器被称为溢出。这样,数据将被写入到不属于引用缓冲区的程序变量的内存的一部分。

这是一个例子:

char buff [10];

buff [10] ='a';

在上面的例子中,我们声明了一个大小为10字节的数组。请注意,索引0到索引9可以用于指代这10个字节的缓冲区。但是,在下一行中,我们的索引10用于存储值“a”。这是缓冲区溢出发生的原因,因为数据写入超出缓冲区的右边界。

为什么缓冲区溢出有害?

我们中的一些人可能会认为,尽管缓冲区溢出是一个糟糕的编程习惯,但堆栈上的一个未使用的变量也是如此,那么为什么这么多的hullabaloo呢?什么是缓冲区超载可能对应用程序造成的影响?

那么,如果在一行中我们必须总结这些问题的答案,那就是:

缓冲区溢出(如果未检测到)可能导致程序崩溃或产生意外结果。

让我们了解上面提到的几个解决方案的几个场景。

1.考虑在堆内存中分配10个字节的情况:

char * ptr =(char *)malloc(10);

现在,如果你尝试这样做:

ptr [10] ='c';

那么这可能导致大多数情况下崩溃。原因是,指针不允许访问不属于它的堆内存。

2.考虑另一种情况,您尝试填补缓冲区(堆栈)超出容量:

char buff [10] = {0};

strcpy(buff, "This String Will Overflow the Buffer");

BUF在c语言中的作用,C语言如何执行buf中的代码相关推荐

  1. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退

    问题描述: python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退,并提示no module named 'pyproj.datadir' 解决方法: 闪退 ...

  2. c语言for语句中break作用,C语言 循环辅助语句 break 和 continue

    break 和 continue 是 C 语言中的循环辅助语句 break 语句 跳出当前循环体. 程序在中途跳出循环.执行 break 语句程序会直接跳出循环. 例子:如下代码判断一个数是不是素数. ...

  3. C语言在中学教学中的作用,C语言教学中学生编程能力的培养

    [摘要]C语言是计算机专业学生的基础课程,学习好C语言不仅能激发学生学习的兴趣,而且对以后的课程学习也大有帮助,学好C语言的关键是掌握编程技巧,从多年的实践教学经验来看,编程技巧的主要应从以下几个方面 ...

  4. c程序语言符号的作用,c语言宏定义中的#,##,#@及\符号的作用

    1.#(stringizing)字符串化操作符 作用:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串.其只能用于有传入参数的宏定   义中,且必须置于宏定义体中的参数名前. 如: #def ...

  5. struck在c语言中的作用,C语言-选择题及答案.doc

    C语言-选择题及答案.doc 计算机程序设计基础(C语言) 单项选择练习题 说明:带*号的对非信息学院的同学不作要求. 一.基本概念 1. C语言程序是由 C 构成的. A)一些可执行语言 B)mai ...

  6. u32在c语言中的作用,c语言中u8,u16,u32(示例代码)

    u8是unsigned char,u16是unsigned short,u32是unsigned long. u8,u16,u32都是C语言数据类型,分别代表8位,16位,32位长度的数据类型,一个字 ...

  7. %2d在c语言中什么作用,C语言中的 %2d是什么意思

    修饰符格式说明.意义M%md以宽度m输出整型数,不足m时,左补空格0m%0md以宽度m输出整型数,不足m时,左补零m,n%m.nf以宽度m输出实型小数,小数位为n位例如:设i=123,a=12.345 ...

  8. c语言fun的作用,c语言fun函数有什么作用

    c语言fun函数有什么作用 c语言fun函数的作用是被主函数所调用,来定义一个函数或方法,这样在引用时可以用fun表示,比如[int fun(int x,int y)]. c语言fun函数的作用是: ...

  9. 充分利用计算机在教学中的作用,浅谈多媒体在教学中的作用

    浅谈多媒体在教学中的作用 时间:2018-04-14 来源:未知 作者:admin 点击:次 核心提示:浅谈多媒体在小学数学教学中的作用 摘要 在数学课堂中合理运用多媒体技术能充分调动学生的学习积极, ...

  10. c语言 运算符的作用,C语言运算符

    原标题:C语言运算符 运算符 在应用程序中,经常会对数据进行运算,为此,C语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号.根据运算符的作用,可以将 C语言中常见的运算符分为 ...

最新文章

  1. 电脑销售技巧_汝州市,如何查询楼盘详细销售数据?官方公布,精确到房间
  2. python多线程与GIL
  3. 华为5720设置静态路由不通_如何设置静态路由与网关?一文了解清楚
  4. 9553下载站java,java se development kit11最新版 64位
  5. C# 序列化理解 1(转)
  6. 安卓设置菊花动画_华为手机必须调整的4个默认设置,让手机流畅到飞起,用到2035年...
  7. Android开发实践:Java层与Jni层的数组传递
  8. mysql 未发现数据源名称并且未指定默认驱动程序_SQLSERVER 链接 MYSQL 的 两种方法 及 未发现数据源名称并且未指定默认驱动程序 处理办法...
  9. java 数据流 中文_【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-wi...
  10. python 使用 config 文件
  11. 对话系统-口语理解-意图检测和槽填充:A Co-interactive Transformer for joint Slot Filling and Intent Detection
  12. 二层交换配置完ping失败_交换机堆叠后部分IP地址PING包不可达问题
  13. 文档公式编辑神器-Snip
  14. 专题·快速沃尔什变换(FWT)【including FWT,洛谷P4717【模板】快速沃尔什变换
  15. Linux驱动——ALSA
  16. 恒压板框过滤实验数据处理_沈阳板框滤布用途,板式过滤器,详情了解
  17. 运算符之 --- 取余运算 %
  18. C99标准里的inttypes.h头文件
  19. ISO27001 LA学习纪录
  20. AI: Python 的Matplotlib 绘图算法库 介绍。

热门文章

  1. Hbase学习笔记(一)
  2. 差分管电路图_差分对管的保护电路的制作方法
  3. Security实现手机验证码注册登录
  4. 父亲节|祝天下所有父亲节日快乐,长寿安康!
  5. Java互联网架构学习之page分页
  6. 利用ffmpeg进行音频转码
  7. backward()和zero_grad()在PyTorch中代表什么意思
  8. chrome dev tools 使用大全
  9. 智慧物流主题汇总(附链接)
  10. 笔记18:SPI之 芯片W25Q128简介