(STACK_OVERFLOW)是什么意思?

如题所述

http://stackoverflow.com/
stack overflow (堆栈溢出)
栈溢出(又称缓冲区溢出)攻击是最常用的黑客技术之一。我们知道,UNIX本身以及其上的许多应用程序都是用C语言编写的,C语言不检查缓冲区的边界。在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区。这称作“堆栈溢出或缓冲溢出”。

一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误。但是,如果输入的数据是经过“黑客”精心设计的,覆盖堆栈的数据恰恰是黑客的入侵程序代码,黑客就获取了程序的控制权。如果该程序恰好是以root运行的,黑客就获得了root权限,然后他就可以编译黑客程序、留下入侵后门等,实施进一步地攻击。按照这种原理进行的黑客入侵就叫做“堆栈溢出攻击”。

为了便于理解,我们不妨打个比方。缓冲区溢出好比是将十磅的糖放进一个只能装五磅的容器里。一旦该容器放满了,余下的部分就溢出在柜台和地板上,弄得一团糟。由于计算机程序的编写者写了一些编码,但是这些编码没有对目的区域或缓冲区——五磅的容器——做适当的检查,看它们是否够大,能否完全装入新的内容——十磅的糖,结果可能造成缓冲区溢出的产生。如果打算被放进新地方的数据不适合,溢得到处都是,该数据也会制造很多麻烦。但是,如果缓冲区仅仅溢出,这只是一个问题。到此时为止,它还没有破坏性。当糖溢出时,柜台被盖住。可以把糖擦掉或用吸尘器吸走,还柜台本来面貌。与之相对的是,当缓冲区溢出时,过剩的信息覆盖的是计算机内存中以前的内容。除非这些被覆盖的内容被保存或能够恢复,否则就会永远丢失。

在丢失的信息里有能够被程序调用的子程序的列表信息,直到缓冲区溢出发生。另外,给那些子程序的信息——参数——也丢失了。这意味着程序不能得到足够的信息从子程序返回,以完成它的任务。就像一个人步行穿过沙漠。如果他依赖于他的足迹走回头路,当沙暴来袭抹去了这些痕迹时,他将迷失在沙漠中。这个问题比程序仅仅迷失方向严重多了。入侵者用精心编写的入侵代码(一种恶意程序)使缓冲区溢出,然后告诉程序依据预设的方法处理缓冲区,并且执行。此时的程序已经完全被入侵者操纵了。

入侵者经常改编现有的应用程序运行不同的程序。例如,一个入侵者能启动一个新的程序,发送秘密文件(支票本记录,口令文件,或财产清单)给入侵者的电子邮件。这就好像不仅仅是沙暴吹了脚印,而且后来者也会踩出新的脚印,将我们的迷路者领向不同的地方,他自己一无所知的地方。

缓冲区溢出的处理

你屋子里的门和窗户越少,入侵者进入的方式就越少……

由于缓冲区溢出是一个编程问题,所以只能通过修复被破坏的程序的代码而解决问题。如果你没有源代码,从上面“堆栈溢出攻击”的原理可以看出,要防止此类攻击,我们可以:

1、开放程序时仔细检查溢出情况,不允许数据溢出缓冲区。由于编程和编程语言的原因,这非常困难,而且不适合大量已经在使用的程序;

2、使用检查堆栈溢出的编译器或者在程序中加入某些记号,以便程序运行时确认禁止黑客有意造成的溢出。问题是无法针对已有程序,对新程序来讲,需要修改编译器;

3、经常检查你的操作系统和应用程序提供商的站点,一旦发现他们提供的补丁程序,就马上下载并且应用在系统上,这是最好的方法。但是系统管理员总要比攻击者慢一步,如果这个有问题的软件是可选的,甚至是临时的,把它从你的系统中删除。举另外一个例子,你屋子里的门和窗户越少,入侵者进入的方式就越少。

黑客主要先从微软漏洞公布表上或者0days上找到漏洞,再根据漏洞编写溢出程序(好多都自带扫描功能)包括本地提权溢出,远程提权溢出.编好后,先用那个扫描一下有漏洞的主机,然后再用它溢出获得权限,控制目标主机.
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-14
1.Stack Overflow是一个与程序相关的IT技术问答网站。 参考好搜百科
用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,我们不会弹出任何广告,销售信息,JavaScript 窗口等。如果你想收集有价值的信息并获得评级的话,你需要注册我们的网站,支付12.95美元即可。我们不会收取其他的费用,而且你可以在最短的时间内获得解答。 Stack Overflow现在已经成为了全球IT界最受欢迎的技术问答网站之一。目前,其每月不重复的访问用户超过1600万;每月网页浏览量(PV)增长了近6倍,达到9500万。
Stack Overflow 由 Joel Spolsky的杰夫·阿特伍德这两个非常著名的博客作者在 2008 年月创建,7月小范围的进行 Beta 测试,直到 9 月份才开始公开的 Beta 测试。
2.stack overflow 参考有道词典
[计] 栈溢出;堆叠溢位;堆栈上限溢位
例句
①A similar strategy is used to prevent the dreaded stack overflow, which occurs when navigating away from a page returns flow to a page that was previously traversed.
一个类似的策略用于防止可怕的堆栈溢出,当从一个页面导航回到前面已经遍历过的页面时,会发生堆栈溢出。
②However, this approach only protects those specific functions, not stack overflow vulnerabilities ingeneral, and it only protects the stack, not local values in the stack.
然而,这种方法仅保护那些特定的函数,而不是从总体上防止堆栈溢出缺陷,并且它仅保护堆栈,而不保护堆栈中的局部变量。
③Memory space breach -- Accomplished via stack overflow, buffer overrun, or heap error, enablesexecution of arbitrary code supplied by the attacker with the permissions of the host process.
内存空间缺口——通过栈溢出、缓冲区溢出或堆错误来实现,以宿主进程的权限执行攻击者提供的任何代码。本回答被网友采纳
第2个回答  2019-04-24
堆栈溢出,申请地址超过堆栈的大小。有可能是递归没有结束条件,或结束条件太难实现。这种情形时,可以把递归改为循环。或者是你申请没有释放,或者申请太大(应该是申请大小的参数有误)
第3个回答  2011-05-02
堆栈溢出???追问

请您说得更具体一点行吗?

(STACK_OVERFLOW)是什么意思?
stack overflow (堆栈溢出)栈溢出(又称缓冲区溢出)攻击是最常用的黑客技术之一。我们知道,UNIX本身以及其上的许多应用程序都是用C语言编写的,C语言不检查缓冲区的边界。在某些情况下,如果用户输入的数据长度超过应用程序给定的缓冲区,就会覆盖其他数据区。这称作“堆栈溢出或缓冲溢出”。一般情况下,...

stack overflow是什么意思
stack overflow [计] 栈溢出;堆叠溢位;堆栈上限溢位

stack overflow的意思
网络  栈溢出; 堆栈溢出; 堆溢出; 栈缓冲区溢出; 堆叠溢位

"SO"作为"Stack Overflow"的缩写,它在编程中具体指什么类型的错误...
英语缩写词"SO"广泛代表"Stack Overflow",中文直译为“栈溢出”。本文将深入解析这个术语,包括其英文原词、中文发音、在英语中的常用度,以及关于SO的分类、应用领域和实际示例。"SO"即"Stack Overflow",这个术语在计算机领域中表示栈溢出现象,其中文拼音为"zhàn yì chū"。据统计,它的流行度达到...

stack overflow什么意思
解释如下:一、堆栈缓冲区溢出的基本概念 堆栈缓冲区溢出是指程序在运行过程中,由于操作不当导致数据超出了为其分配的堆栈内存空间,从而覆盖相邻内存区域的一种错误。这种情况可能由于编程逻辑错误或外部输入处理不当造成。二、溢出产生的后果 当发生堆栈缓冲区溢出时,可能会导致程序运行异常,如程序崩溃、...

SO是Stack Overflow的缩写,它在编程中具体指什么?
英语缩写"SO"在计算机领域内广泛代表"Stack Overflow",直译为“栈溢出”。Stack Overflow是一个专门针对编程问题解答的在线平台,它在程序员社区中拥有很高的知名度。这个缩写词在英文中的流行度为21,属于Computing领域,主要用于描述与编程和计算机系统相关的错误情况。SO的中文解释为“栈溢出”,指的是...

什么是stackoverflow
StackOverflow是一个面向程序员的在线社区,主要提供问答服务。程序员可以在这里提问、回答问题、分享知识和经验。这个平台的特点是以技术讨论和解决问题为主,吸引了大量开发者前来交流。二、主要功能 StackOverflow的核心功能是问答交流。用户如果遇到编程中遇到的问题,可以在平台上提问,其他用户会查看问题并...

python stack overflow 怎么解决
stack overflow是堆栈溢出。堆栈溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆栈溢出很可能由无限递归(Infinite recursion)产生,但也可能仅仅是过多的堆栈层级。请对应检查一下。

网页突然弹出“stack overflow at line :2”是什么情况?求解决??_百...
顾名思义,stack overflow 就是是栈溢出了。在进行数值运算时,我们常常要和运算结果的溢出打交道。数值运算结果可能上溢(overflow),也可能是下溢(underflow)。不过栈的溢出显然只可能是上溢,即栈空间被用完了。在提起“栈”(stack)这个概念的时候,千万不要忘记了它的兄弟“堆”(heap),也要...

so是什么域名
SO域名是“Stack Overflow”(中文翻译为“栈溢出”)的缩写,一个知名的程序员问答网站,SO域名直接指向该网站。SO域名在2014年被注册,并且不像其他较为常见的域名那样需要维护相应的网站或应用程序,而是直接指向了Stack Overflow网站。对于时间和精力有限的程序员来说,这样的域名使用起来十分便捷。在很多...

相似回答