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

简介:

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

     缓冲区溢出漏洞从计算机出现初期就已经存在,并且今天仍然存在。大多数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漏洞都有修复补丁
790 0
maccms网站被挂马 根源问题在于SQL注入远程代码漏洞
|
3天前
|
安全 编译器 Shell
什么是缓冲区溢出? 缓冲区溢出攻击的类型?攻击者如何利用缓冲区溢出?如何防止缓冲区溢出攻击?
什么是缓冲区溢出? 缓冲区溢出攻击的类型?攻击者如何利用缓冲区溢出?如何防止缓冲区溢出攻击?
8 0
|
5月前
|
云安全 安全 中间件
如何确认网站是否有漏洞,如何找出网站存在的漏洞,找到漏洞该如何处理
如何确认网站是否有漏洞,如何找出网站存在的漏洞,找到漏洞该如何处理
如何确认网站是否有漏洞,如何找出网站存在的漏洞,找到漏洞该如何处理
|
安全 计算机视觉 Windows
【知识】缓冲区溢出攻击基础+靶机演练
缓冲区溢出是常见的应用或系统漏洞,本文适合渗透初学者进阶,为了更有利于小伙伴的学习,我录制了相关视频,发布到bilibili,值得一看。
297 0
|
安全 Shell 网络安全
渗透测试-模拟黑客给软件加上后门获取shell
渗透测试-模拟黑客给软件加上后门获取shell
渗透测试-模拟黑客给软件加上后门获取shell
|
SQL 安全 Oracle
网站漏洞如何修复jeecms网站程序
jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数据库,服务器系统支持windows2008,windows2012,以及linux centos系统。
358 0
网站漏洞如何修复jeecms网站程序
|
存储 运维 NoSQL
服务器被植入挖矿程序排查案例
主机的操作系统是CentOS7,应用架构是Java+MySQL+Redis。客户描述问题是有一个从下午2点到凌晨的秒杀活动。秒杀系统开始的时候是可以正常运行的,但是到了晚上7点就突然无法使用了,前台提交秒杀请求后,后端无响应,最终超时退出。
921 0
|
云安全 监控 安全
Java开发远程调试易埋隐患,JDWPMiner挖矿木马后门分析
近日,阿里云安全监测到一种利用JDWP RCE漏洞进行挖矿的恶意攻击,对用户资产危害极大,近期传播有所上升,提醒广大用户注意防护。
855 0
Java开发远程调试易埋隐患,JDWPMiner挖矿木马后门分析
如何修复phpdisk网站程序代码漏洞
phpdisk是目前互联网最大的网盘开源系统,采用PHP语言开发,mysql数据库架构,我们SINE安全在对其网站安全检测以及网站漏洞检测的同时,发现该网盘系统存在严重的sql注入攻击漏洞,危害性较高,可以直接获取网站的管理员账号密码,利用默认后台地址登录,可以直接获取webshell权限。
1969 0
|
新零售 Web App开发 安全
网站程序有漏洞怎么修复和查找漏洞
ecshop目前最新版本为4.0,是国内开源的一套商城系统,很多外贸公司,以及电商平台都在使用,正因为使用的人数较多,很多攻击者都在挖掘该网站的漏洞,就在最近ecshop被爆出高危漏洞,该漏洞利用跨站伪造函数,来对网站数据库进行攻击。
2290 0