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

简介:

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

     缓冲区溢出漏洞从计算机出现初期就已经存在,并且今天仍然存在。大多数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,如需转载请自行联系原作者


相关文章
|
5月前
|
安全 程序员 网络安全
Kali渗透测试:对软件的溢出漏洞进行测试
Kali渗透测试:对软件的溢出漏洞进行测试
69 1
|
6月前
|
安全
某留学网站被植入利用 PPStream 堆栈漏洞的代码
某留学网站被植入利用 PPStream 堆栈漏洞的代码
|
6月前
|
安全 Windows
某县农业网被植入利用暴风影音2缓冲区溢出等漏洞的恶意代码
某县农业网被植入利用暴风影音2缓冲区溢出等漏洞的恶意代码
|
SQL 安全 测试技术
渗透测试网站漏洞寻找过程
渗透测试系统漏洞如何找到:在信息收集的根本上找到目标软件系统的系统漏洞。系统漏洞找到我来为大伙儿梳理了4个层面:框架结构模块透明化系统漏洞:依据所APP的的框架结构模块版本号状况,检索透明化系统漏洞认证payload,根据人工或是软件的方法认证系统漏洞。通常这类系统漏洞,存有全部都是许多非常大的系统漏洞。过去系统漏洞:像例如xss\sql注入\ssrf等过去的信息安全系统漏洞,这部分可以运用人工或是软件开展鉴别,就考察大伙儿应对系统漏洞的熟练掌握水平了。动态口令系统漏洞:系统对登录界面点采取动态口令攻击。代码审计0day:在开源代码或未开源代码的状况下,获得目标APP系统源码,开展代码审计。
196 0
渗透测试网站漏洞寻找过程
|
SQL 安全 Oracle
网站漏洞如何修复jeecms网站程序
jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数据库,服务器系统支持windows2008,windows2012,以及linux centos系统。
434 0
网站漏洞如何修复jeecms网站程序
|
存储 运维 NoSQL
服务器被植入挖矿程序排查案例
主机的操作系统是CentOS7,应用架构是Java+MySQL+Redis。客户描述问题是有一个从下午2点到凌晨的秒杀活动。秒杀系统开始的时候是可以正常运行的,但是到了晚上7点就突然无法使用了,前台提交秒杀请求后,后端无响应,最终超时退出。
1027 0
|
安全 网络安全 PHP
如何对网站进行渗透测试服务 扫描漏洞并修复
天气越来越凉爽,在对客户网站代码进行渗透测试,漏洞测试的同时我们安全渗透技术要对客户的网站源代码进行全方位的安全检测与审计,只有真正的了解网站,才能更好的去渗透测试,发现网站存在的漏洞,尽可能的让客户的网站在上线之前,安全防护做到最极致.
1593 0
如何修复phpdisk网站程序代码漏洞
phpdisk是目前互联网最大的网盘开源系统,采用PHP语言开发,mysql数据库架构,我们SINE安全在对其网站安全检测以及网站漏洞检测的同时,发现该网盘系统存在严重的sql注入攻击漏洞,危害性较高,可以直接获取网站的管理员账号密码,利用默认后台地址登录,可以直接获取webshell权限。
2025 0
|
安全 程序员 索引
黑客用谷歌开发人员网站发恶意软件
一位安全研究人员星期五(1月9日)称,谷歌为开发人员推出的免费的代码托管网站正在被用于发布恶意软件。 Google Code是程序员能够托管项目和代码的一个网站。McAfee Avert Labs的安全研究经理Dave Marcus说,这个网站在拥有合法的代码的同时还有一些指向虚假的视频的链接,让用户下载缺失的解码器。
866 0
|
安全 关系型数据库 Java
网站漏洞怎么修复代码漏洞
jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数据库,服务器系统支持windows2008,windows2012,以及linux centos系统。
1648 0

热门文章

最新文章