缓冲区溢出出现在用户输入的相关缓冲区内,在一般情况下,这是现在的计算机和网络上的最大的安全隐患之一。这是因为在编程的层次上很容易出现这中问题,这对于不明白或是无法获得源代码的使用者来说是不可见的,很多的这中问题就会被利用。[了解详细]
缓冲区溢出出现在用户输入的相关缓冲区内,在一般情况下,这是现在的计算机和网络上的最大的安全隐患之一。
本文将会为防御者描述一些基本概念,包括一个攻击者经历漏洞开发过程,需要的工作量和攻击者将要面对的编写恶意代码攻击特定漏洞的风险。
以下的文章主要描述的是黑客中级技术,缓冲区溢出攻击,以及对缓冲区溢出的原理,缓冲区溢出的漏洞和攻击等内容的讲述。
本文主要讲述通过NIDS检测远程缓冲区的漏洞,在黑客进攻时对自己进行伪装,欺骗NIDS检测,达到绕过IDS并进行攻击的目的。
本篇教程的内容将以Vulnserver应用程序中一个已知缓冲区溢出漏洞的攻击过程为主。Vulnserver是一款Windows服务器应用程序,其中包含一系列可供利用的缓冲区溢出漏洞,旨在为大家在学习和实践基本的fuzzing、调试以及开发技能方面提供必要的辅助。
未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序的执行流程指向我们的shellcode.
缓冲区溢出攻击体系以及一些技术我们在以前的文章中已经介绍过了,希望大家已经掌握,本文我们将继续向大家有关Unix下的缓冲区溢出防御的内容。
编程语言通常都要带有库文件。如果一个库文件具有某些漏洞,任何包括该库文件的应用程序就都会有这些漏洞。因此,黑客往往会先试图利用常用的库文件中已知的漏洞来达到攻击本地应用程序的目的。
虽然Linux病毒屈指可数,但是基于缓冲区溢出(Buffer Overflow)漏洞的攻击还是让众多Linux用户大吃一惊。所谓“世界上第一个Linux病毒”??reman,严格地说并不是真正的病毒,它实质上是一个古老的、在Linux/Unix(也包括Windows等系统)世界中早已存在的“缓冲区
我们通常所说的“溢出”指的是缓冲区溢出,(废话,不然要从那里溢出呀!)先解释一下什么是缓冲区——缓冲区是内存中存放数据的地方,是程序运行时计算机内存中的一个连续的块,它保存了给定类型的数据。问题随着动态分配变量而出现。
媒体上关于系统漏洞的话题一直不断,在我所接触的用一些朋友和用户中虽然也知道打系统补丁很重要,但却又一直不以为然总以为网络上的危险离自己很远,大部份人都认为进行一次远程攻击很困难甚至认为只要安装了防病毒软件就一切大吉,是不是这样呢?让我们看看今天的操作。
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。缓冲区溢出攻击有多种英文名称:buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack, mangle the stack, memory leak,overrun screw;它们指的都是同一种攻击手段。第一个缓冲区溢出攻击--Morris蠕虫,发生在十年前,它曾造成了全世界6000多台网络服务器瘫痪。

        缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患。操作系统所使用的缓冲区,又被称为“堆栈”,在各个操作进程之间,指令会被临时储存在“堆栈”当中,“堆栈”也会出现缓冲区溢出。【缓冲区溢出_百度百科

      在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
 
验证码: (点击刷新验证码) 匿名发表
 

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院