看程序体验缓冲区溢出漏洞

简介:

 看程序体验缓冲区溢出漏洞

     缓冲区溢出漏洞从计算机出现初期就已经存在,并且今天仍然存在。大多数Internet蠕虫程序使用缓冲区溢出漏洞来传播,甚至Internet Explorer中的O-day漏洞,2004年的Sasser是一个利用微软操作系统的Lsass缓冲区溢出漏洞就是由于缓冲区溢出造成的。
   缓冲区溢出通常是向数组中写数据时,写入的数据的长度超出了数组原始定义的大小。C 语言的教程里时通常会告诉你程序溢出后会发生不可预料的结果,但在网络安全领域,缓冲区溢出是可控的。
   C语言是一种高级程序设计语言,但C假定程序员负责数据的完整性。如果将这种责任移交给编译器,由于对每个变量都要检查其完整性,最后所得到的二进制速度将会非常慢。并且,这会使程序员失去一个重要的控制层,并会使语言复杂化。
    尽管C语言的简单性增加了程序员的控制能力,提高了最后所得到的程序的效率,但是,如果程序员不小心的话,这种简单性会导致程序缓冲区溢出和存储器泄漏这样的漏洞。这意味着一旦给某个变量分配了存储空间,则没有内置的安全机制来确保这个变量的容量能适应己分配的存储空间。如果程序员把10个字节的数据存入只分配了8个字节空间的缓冲区中,这种操作是允许的,即使这种操作很可能导致程序崩溃。这称为缓冲区超限(buffer overrun)或缓冲区溢出,由于多出的2个字节数据会溢出,存储在己分配的存储空间之外,因此会重写已分配存储空间之后的数据。如果重写的是一段关键数据,程序就会崩溃。下面以在Linux环紧下,代码overflowe.c提供了一个讲解的例子。

 

 

gcc编译
      编译,即把人类可读的源代码转换为机器可读的二进制文件的过程,编译得到的二进制文件可在计算机上执行。更具体地说,编译器接受源代码,并将其转换为一组中间文件称之为目标代码。这些文件接近可执行文件,但可能引用了一些初始源码文件中未包含的符号和函数,这些引用在目标代码文件中是无法解析的。这些符号和引用通过称之为链接的过程进行解析,在此过程中各个目标文件相互链接起来,形成可执行的二进制文件。在这里,笔者简化了编译过程,以便读者理解。当使用 C语言在Unix系统上编程时,所选的编译器是GNU C Compiler (gcc)。Gcc提供了许多选项供编译时使用。最常用的选项:
-o filename 编译得到的二进制文件以指定的文件名保存,默认是 a.out
-c 只编译不链接,生成的目标文件扩展名为 .o, 下面我们开始编译 overflow_example.c

    现在,您应当能够读懂上面的源代码并且能弄明白程序要干什么。在下面例子的输出中,程序编译之后,我们试图从第1个命令行参数复制10字节到buffer two,但给它已分配的内存只有8字节。请大家注意在内存中buffer_one紧挨在buffer_two的后面,因此将10字节复制到buffer_two中时,最后两个字节9 0会溢出到buffer_one中,并将这里的数据覆盖。较大的缓冲区自然会溢入到其他变量中,但是如果使用了一个足够大的缓沖区,程序会崩溃并终止。

 

     为什么得到segmentationfault?,是因为地址超出了进程段的允许范围,从而导致了segmentationfault。  

  好了,以上我们已经可以通过溢出来修改目标程序流程了,已经掌握了溢出的基本原理。现实生活中的溢出利用当然更复杂一点,需要更多的系统体系结构知识和小技巧而已。相信你以后会逐步了解到所谓溢出漏洞.

 最后我们浏览下面这段视频,下面的输出展示了程序编译和执行的过程  下载高清视频: http://down.51cto.com/data/155677
















 本文转自 李晨光 51CTO博客,原文链接:http://blog.51cto.com/chenguang/466053,如需转载请自行联系原作者


相关文章
|
SQL 安全 前端开发
maccms网站被挂马 根源问题在于SQL注入远程代码漏洞
目前苹果CMS官方在不断的升级补丁,官方最新的漏洞补丁对于目前爆发的新漏洞没有任何效果。更新补丁的用户网站还是会遭受到挂马的攻击,很多客户因此找到我们SINE安全寻求网站安全技术上的支持,针对该漏洞我们有着独特的安全解决方案以及防止挂马攻击的防护,包括一些未公开的maccms POC漏洞都有修复补丁
785 0
maccms网站被挂马 根源问题在于SQL注入远程代码漏洞
|
SQL 安全 Oracle
网站漏洞如何修复jeecms网站程序
jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数据库,服务器系统支持windows2008,windows2012,以及linux centos系统。
354 0
网站漏洞如何修复jeecms网站程序
|
SQL 安全 测试技术
渗透测试网站漏洞寻找过程
渗透测试系统漏洞如何找到:在信息收集的根本上找到目标软件系统的系统漏洞。系统漏洞找到我来为大伙儿梳理了4个层面:框架结构模块透明化系统漏洞:依据所APP的的框架结构模块版本号状况,检索透明化系统漏洞认证payload,根据人工或是软件的方法认证系统漏洞。通常这类系统漏洞,存有全部都是许多非常大的系统漏洞。过去系统漏洞:像例如xss\sql注入\ssrf等过去的信息安全系统漏洞,这部分可以运用人工或是软件开展鉴别,就考察大伙儿应对系统漏洞的熟练掌握水平了。动态口令系统漏洞:系统对登录界面点采取动态口令攻击。代码审计0day:在开源代码或未开源代码的状况下,获得目标APP系统源码,开展代码审计。
152 0
渗透测试网站漏洞寻找过程
|
SQL 安全 关系型数据库
ecshop 全系列版本通杀漏洞 远程代码执行sql注入漏洞
ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0、3.6、4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码执行sql注入语句漏洞,导致可以插入sql查询代码以及写入代码到网站服务器里,严重的可以直接获取服务器的管理员权限,甚至有些网站使用的是虚拟主机,可以直接获取网站ftp的权限,该漏洞POC已公开,使用简单,目前很多商城网站都被攻击,危害较大,针对于此我们SINE安全对该ECSHOP漏洞的详情以及如何修复网站的漏洞,及如何部署网站安全等方面进行详细的解读。
460 0
ecshop 全系列版本通杀漏洞 远程代码执行sql注入漏洞
|
移动开发 缓存 监控
理解缓冲区溢出漏洞的利用
在我第一次不得不处理缓冲区溢出漏洞时,我真是一窍不通啊!虽然我可以建立网络和配置防火墙、代理服务器,不费吹灰之力的入侵检测系统,但是对于利用代码来说,我还是第一次接触到。然而,正如处理任何复杂或是困难的概念一样,最好的办法就是把它分解成我们了解的多个部分。
330 0
如何修复phpdisk网站程序代码漏洞
phpdisk是目前互联网最大的网盘开源系统,采用PHP语言开发,mysql数据库架构,我们SINE安全在对其网站安全检测以及网站漏洞检测的同时,发现该网盘系统存在严重的sql注入攻击漏洞,危害性较高,可以直接获取网站的管理员账号密码,利用默认后台地址登录,可以直接获取webshell权限。
1966 0
|
新零售 Web App开发 安全
网站程序有漏洞怎么修复和查找漏洞
ecshop目前最新版本为4.0,是国内开源的一套商城系统,很多外贸公司,以及电商平台都在使用,正因为使用的人数较多,很多攻击者都在挖掘该网站的漏洞,就在最近ecshop被爆出高危漏洞,该漏洞利用跨站伪造函数,来对网站数据库进行攻击。
2290 0

热门文章

最新文章