网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | 防火墙 | IDS/IPS | VPN | PKI | Honeypot | Hacker/Intruder | 黑客技术 | 破解技术 | 加密技术 | 病毒防护 | 木马 | 反垃圾邮件 | 反流氓软件 | 漏洞 | 无线安全 | UNIX | Windows | 安全编程 | 安全软件 | TPM/TCG | 数据恢复 | 企业信息安全 | 个人信息安全
 当前位置: Home > 黑客技术 > 文章  
黑客经典教程之缓冲区溢出解密(一)
文章来源: 赛迪网 文章作者: 丁丁 发布时间: 2006-09-12   字体: [ ]
 

  缓冲溢出弱点诞生于70年代。Morris Worm(80年代)可以认为是它们的第一次公开应用。从90年代开始,相关的文档,如著名的Aleph1的”Smashing the Stack for Fun and Profit”和代码已经在互联网上公开。

  这篇文章是关于某种需要非常重视的主题的系列文章的开始,并且包括了很多的细节;它的目的是解释和阐明非常基本的漏洞类型,即所谓的本地溢出,而且论述了如何编写利用这种漏洞的代码。

  为了理解接下来的内容,需要一些C和汇编的知识。虚拟内存,一些操作系统的基本知识例如象一个进程在内存里是如何布局的。你必须知道什么是setuid二进制文件,而且当然你需要至少能够使用UNIX系统。如果你有gdb/cc调试编译的经验,那就非常好了。文档特定在Linux/ix86环境下。细节的不同之处取决于操作系统或者你使用的架构。在接下来的文档里面,将介绍相应的更高级的溢出和shellcode技术。

  最新版本的文档可以在这里找到:

  http://www.enderunix.org/documents/eng/bof-eng.txt

  什么是溢出?

  如果你知道C,你肯定知道什么是字符型数组。假设你用C写代码,你应该已经知道数组的基本特性,象:数组拥有同样类型的对象,例如:int,char,float。就像所有的数据结构一样,它们能够被分成是”静态”或者是”动态”。静态变量被填入程序的数据段,然而,动态变量在内存中的可执行程序的堆栈区域分配和重新分配。”基于堆栈”的溢出就在这里发生了,我们在数据结构中填更多的数据,也就是说多于一个数组能够存储的数据,我们忽略许多重要的数据超越这个数组的界限。简单的,拷贝20字节到一个只能存储12字节的数组里。

  一个Linux ELF格式二进制的存储结构相当的复杂。特别是在ELF (详细内容,在google中搜索”Executable and Linkable Format”)和共享库引入后,它已经变得更加复杂。然而,基本上,每一个进程运行时有3段:

  1.文本段,是一个只读部分包括所有的程序指令。对于等同于下面C代码的指令集合将被包括在这段。

for (i = 0; i < 10; i++)
		s += i;

  2.数据段是初始化了的和未初始化的数据(也被认为是BBS段)所在的块。

if you code;
	
	int i;
	
	the variable is an uninitialized variable, and it'll be stored in
 	the "uninitialized variables" part of the Data Segment. (BSS)

	and, if you code;

	int j = 5;

	the variable is an initialized variable, and the the space for
	the j variable will be allocated in the "initialized variables" 
	part of the Data Segment.

  3.一个被称为”堆栈”的段,在这里动态变量(或者在C里面叫自动变量)被分配和重新分配;并且为函数返回临时存储地址。例如,在下面代码片段中,i变量在堆栈中产生,仅仅在函数返回后,它就消亡了。

int myfunc(void)
	{
		int i;
		
		for (i = 0; i < 10; i++)
			putchar("*");
		putchar('\n');
	}

 
推荐文章
·骇客学堂:灰鸽子VIP2006终极免
·黑客攻破SQL服务器系统的十种方
·黑客的攻击:WEB入侵的过程
·Web环境下SQL注入攻击的检测与防
·黑客经典教程之理解地址解析协议
·黑客经典教程之缓冲区溢出解密(
·黑客基础内容:21种RING的提权方
·网络孙子兵法!黑客攻防也有三十
·黑客攻击常见方法及安全策略制订
·黑客技巧 使用Google黑掉Windows
 

 
共3页: 上一页 1 [2] [3] 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
热点文章
·黑客基础内容 DOS常见命
·攻防秘技:彻底防范网络
·黑客教程:黑客入侵个人
·很多人的Hack经历第一次
·黑客基础内容 IPC$空连
·黑客经典教程之理解地址
·黑客技巧 使用Google黑
·黑客攻击常见方法及安全
相关分类
相关文章
·黑客经典教程之缓冲区溢
·黑客经典教程之理解地址
·菜鸟都学会 十三步简单
·骇客学堂:跨站攻击偷取
·黑客的攻击:WEB入侵的
·黑客攻破SQL服务器系统
·黑客新人必学的网站入侵
·攻防秘技:彻底防范网络
更多...
 
 

Copyright(c) 2001-2008 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统
$Id: article_article.html,v 1.3 2007/02/10 12:00:37 yjs Exp $