计算机中的“溢出”到底是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机中的“溢出”到底是啥意思相关的知识,希望对你有一定的参考价值。

溢出是黑客开发的控制别人电脑的程序。

溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到你电脑具有管理员资格的控制权,你在你自己电脑上能够运行的东西他可以全部做到,等于你的电脑就是他的了。

当你用 C/C++ 书写代码时,应该处处留意如何处理来自用户的数据。如果一个函数的数据来源不可靠,又用到内存缓冲区,那么它就必须要做到知道内存缓冲区的总长度和检验内存缓冲区。

扩展资料

缓冲区溢出

缓冲区是用户为程序运行时在计算机中申请的一段连续的内存,它保存了给定类型的数据。缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。

数据溢出

在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。

客观原因

在 C 和 C++ 语言本身中,这个问题是不容易解决的。该问题基于 C 语言的根本设计决定(特别是 C 语言中指针和数组的处理方式)。由于 C++ 是最兼容的 C 语言超集,它也具有相同的问题。

现实状况

在几乎所有计算机语言中,不管是新的语言还是旧的语言,使缓冲区溢出的任何尝试通常都会被该语言本身自动检测并阻止(比如通过引发一个异常或根据需要给缓冲区添加更多空间)。但是有两种语言不是这样:C 和 C++ 语言。

参考资料:百度百科-溢出

参考技术A

溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到你电脑具有管理员资格的控制权,你在你自己电脑上能够运行的东西他可以全部做到,等于你的电脑就是他的了。溢出是程序设计者设计时的不足所带来的错误。

扩展资料

溢出分类

1、缓冲区溢出

缓冲区是用户为程序运行时在计算机中申请的一段连续的内存,它保存了给定类型的数据。缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。

更为严重的是,缓冲区溢出攻击占了远程网络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!由于这类攻击使任何人都有可能取得主机的控制权,所以它代表了一类极其严重的安全威胁。

2、内存溢出

内存溢出已经是软件开发历史上存在了近40年的“老大难”问题,象在“红色代码”病毒事件中表现的那样,它已经成为黑客攻击企业网络的“罪魁祸首”。

如在一个域中输入的数据超过了它的要求就会引发数据溢出问题,多余的数据就可以作为指令在计算机上运行。据有关安全小组称,操作系统中超过50%的安全漏洞都是由内存溢出引起的,其中大多数与微软的技术有关。

微软的软件是针对台式机开发的,内存溢出不会带来严重的问题。但现有台式机一般都连上了互联网,内存溢出就为黑客的入侵提供了便利条件。

3、数据溢出

在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。

溢出原因

数据类型超过了计算机字长的界限就会出现数据溢出的情况。导致内存溢出问题的原因有很多,比如:

(1) 使用非类型安全(non-type-safe)的语言如 C/C++ 等。

(2) 以不可靠的方式存取或者复制内存缓冲区。

(3)编译器设置的内存缓冲区太靠近关键数据结构。

参考资料来源:百度百科—溢出

参考技术B

溢出是黑客开发的控制别人电脑的程序。

溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到你电脑具有管理员资格的控制权,你在你自己电脑上能够运行的东西他可以全部做到,等于你的电脑就是他的了。

当你用 C/C++ 书写代码时,应该处处留意如何处理来自用户的数据。如果一个函数的数据来源不可靠,又用到内存缓冲区,那么它就必须要做到知道内存缓冲区的总长度和检验内存缓冲区。

扩展资料:

溢出分类

1、缓冲区溢出

缓冲区是用户为程序运行时在计算机中申请的一段连续的内存,它保存了给定类型的数据。

缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。

2、数据溢出

在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。

3、内存溢出

内存溢出已经是软件开发历史上存在了近40年的“老大难”问题,象在“红色代码”病毒事件中表现的那样,它已经成为黑客攻击企业网络的罪魁祸首。

参考资料:百度百科-溢出

参考技术C

溢出

溢出是黑客利用操作系统的漏洞,专门开发了一种程序,加相应的参数运行后,就可以得到你电脑具有管理员资格的控制权,你在你自己电脑上能够运行的东西他可以全部做到,等于你的电脑就是他的了。溢出是程序设计者设计时的不足所带来的错误。

例:
比如有一个8位的2进制数11111110
要在这上面加上一个数如:00001111
求和它的结果为:      100001101 (它超出了我们所能存储的最大范围,也就是产生了溢出)
由于溢出所以我们得到的结果就为:00001101(超过了它的最大范围所以就把超出的(位数)给丢掉,注意它的结果不是11111111)

扩展资料

溢出的原因

现实状况

在几乎所有计算机语言中,不管是新的语言还是旧的语言,使缓冲区溢出的任何尝试通常都会被该语言本身自动检测并阻止(比如通过引发一个异常或根据需要给缓冲区添加更多空间)。但是有两种语言不是这样:C 和 C++ 语言。C 和 C++ 语言通常只是让额外的数据乱写到其余内存的任何位置,而这种情况可能被利用从而导致恐怖的结果。

更糟糕的是,用 C 和 C++ 编写正确的代码来始终如一地处理缓冲区溢出则更为困难;很容易就会意外地导致缓冲区溢出。除了 C 和 C++ 使用得 非常广泛外,上述这些可能都是不相关的事实;例如,Red Hat Linux 7.1 中 86% 的代码行都是用 C 或 C ++ 编写的。因此,大量的代码对这个问题都是脆弱的,因为实现语言无法保护代码避免这个问题。

客观原因

在 C 和 C++ 语言本身中,这个问题是不容易解决的。该问题基于 C 语言的根本设计决定(特别是 C 语言中指针和数组的处理方式)。由于 C++ 是最兼容的 C 语言超集,它也具有相同的问题。存在一些能防止这个问题的 C/C++ 兼容版本,但是它们存在极其严重的性能问题。而且一旦改变 C 语言来防止这个问题,它就不再是 C 语言了。许多语言(比如 Java 和 C#)在语法上类似 C,但它们实际上是不同的语言,将现有 C 或 C++ 程序改为使用那些语言是一项艰巨的任务。

参考资料百度百科溢出

参考技术D

在计算机中有个叫“缓冲区”的地方,他是用来存储用户输入的数据的,缓冲区的长度是被事先设定好的,如果用户输入的数据超过了缓冲区的长度,那么就会溢出,而这些溢出的数据就会覆盖在合法的数据上,这就像杯子装水的道理,水多了杯子装不下,当然就会溢出。缓冲区溢出漏洞主要是由于许多软件没有对缓冲区进行检查而造成。 


利用缓冲区溢出进行攻击是一种很好的方法。常见的溢出攻击如:微软的MS-04011远程缓冲区溢出漏洞。利用该漏洞就可以获得对方的SHELL,而且这个漏洞也被许多人用来入侵,成功率很高,不过现在的人都有点安全意识,都补上了该漏洞,现在很少有这样漏洞的机子。

拓展资料:

缓冲器为暂时置放输出或输入资料的内存。

缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。

缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。

时间戳中的 T 和 Z 到底是啥意思?

【中文标题】时间戳中的 T 和 Z 到底是啥意思?【英文标题】:What exactly does the T and Z mean in timestamp?时间戳中的 T 和 Z 到底是什么意思? 【发布时间】:2015-05-30 16:11:16 【问题描述】:

我有这个时间戳值由 Web 服务 "2014-09-12T19:34:29Z" 返回

我知道它的意思是时区,但它到底是什么意思?

我正在尝试模拟这个网络服务,那么有没有办法在 python 中使用strftime 生成这个时间戳?

很抱歉,这很明显,但 Google 并没有提供多大帮助,strftime() 参考页面也没有提供帮助。

我目前正在使用这个:

x.strftime("%Y-%m-%dT%H:%M:%S%Z")
'2015-03-26T10:58:51'

【问题讨论】:

【参考方案1】:

T 并不代表任何东西。这只是ISO 8601 combined date-time format 需要的分隔符。您可以将其理解为 Time 的缩写。

Z 代表 时区,因为它从 Coordinated Universal Time (UTC) 偏移了 0。

这两个字符都只是格式中的静态字母,这就是datetime.strftime() 方法没有记录它们的原因。您可以使用 QMMonty Python 并且该方法也会将它们原封不动地返回;该方法仅查找以% 开头的模式,以用来自datetime 对象的信息替换这些模式。

【讨论】:

Z实际上代表Zulu,它是UTC0的“名称”。听起来很奇怪,但每个时区都有各自的名称。 @TomCho: 不,ZuluZ 的北约拼音字母名称,使用它是因为时区时区为零。请参阅我在答案中包含的 Wikipedia 链接:UTC 时间也称为“祖鲁”时间,因为“祖鲁”是国际民航组织“Z”的拼写字母代码字。 @TomCho:看起来 TimeAndDate 倒退了; ZZulu 之前,我想说。 en.wikipedia.org/wiki/List_of_military_time_zones 很有趣,但没有给出 Z 被用于零偏移时区的任何历史理由,只是 Z 因此被命名为 Zulu +1 是的,我同意你的看法。奇怪的是他们不在军事区使用J这个字母。也许是因为德语或芬兰语等成语的发音不同?无论如何,感谢您清理一切。 @TomCho: Z is used for +0000 (GMT at the time) since 1950s(甚至在 UTC 存在之前)。据我了解Z 只是一个字母(您可以使用助记符 Zero 和/或将其发音为Zulu(来自广泛使用的拼写字母)

以上是关于计算机中的“溢出”到底是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

缓冲区溢出 是啥意思?原理性讲解下

必看!“区块链”到底是啥?为未来财务经济带来什么变化?

计算机内的“溢出”是指其运算结果为无穷大?试说明“溢出”含义.

网络中的点对点到底是啥意思,啥原理啊?

嵌入式 是啥

PAAS平台到底是啥意思啊?