利用格式化字符串漏洞对系统发起攻击
日期:2007年6月3日 作者: 查看:[大字体 中字体 小字体]-
【编者按:一个很小的疏忽,就会酿成危机系统安全的大患!】
什么是格式化字符串攻击?
格式化字符串漏洞同其他许多安全漏洞一样是由于程序员的懒惰造成的。当你正在阅读本文的时候,也许有个程序员正在编写代码,他的任务是:打印输出一个字符串或者把这个串拷贝到某缓冲区内。他可以写出如下的代码:
printf("%s", str);
但是为了节约时间和提高效率,并在源码中少输入6个字节,他会这样写:printf(str);
为什么不呢?干嘛要和多余的printf参数打交道,干嘛要花时间分解那些愚蠢的格式?printf的第一个参数无论如何都会输出的!程序员在不知不觉中打开了一个安全漏洞,可以让攻击者控制程序的执行,这就是不能偷懒的原因所在。
为什么程序员写的是错误的呢?他传入了一个他想要逐字打印的字符串。实际上该字符串被printf函数解释为一个格式化字符串(format string)。函数在其中寻找特殊的格式字符比如"%d"。如果碰到格式字符,一个变量的参数值就从堆栈中取出。很明显,攻击者至少可以通过打印出堆栈中的这些值来偷看程序的内存。但是有些事情就不那么明显了,这个简单的错误允许向运行中程序的内存里写入任意值。
Printf中被忽略的东西
在说明如何为了自己的目的滥用printf之前,我们应该深入领会printf提供的特性。假定读者以前用过printf函数并且知道普通的格式化特性,比如如何打印整型和字符串,如何指定最大和最小字符串宽度等。除了这些普通的特性之外,还有一些深奥和鲜为人知的特性。在这些特性当中,下面介绍的对我们比较有用:
* 在格式化字符串中任何位置都可以得到输出字符的个数。当在格式化字符串中碰到"%n"的时候,在%n域之前输出的字符个数会保存到下一个参数里。例如,为了获取在两个格式化的数字之间空间的偏量:
int pos, x = 235, y = 93;
printf("%d %n%d\n", x, &pos, y);
printf("The offset was %d\n", pos);* %n格式返回应该被输出的字符数目,而不是实际输出的字符数目。当把一个字符串格式化输出到一个定长缓冲区内时,输出字符串可能被截短。不考虑截短的影响,%n格式表示如果不被截短的偏量值(输出字符数目)。为了说明这一点,下面的代码会输出100而不是20:
char buf[20];
int pos, x = 0;
snprintf(buf, sizeof buf, "%.100d%n", x, &pos);
printf("position: %d\n", pos);简单的例子
除了讨论抽象和复杂的理论,我们将会使用一个具体的例子来说明我们刚才讨论的原理。下面这个简单的程序能满足这个要求:
/*
* fmtme.c
* Format a value into a fixed-size buffer
*/#include <stdio.h>
int
- [1] [2] [3] 下一页
-
- 利用格式化字符串漏洞对系统发起攻击 相关文章:
- 利用格式化字符串漏洞对系统发起攻击 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·黑客攻击与防守
- ·最详细的黑客入门法则
- ·查找对方IP地址的一些方法
- ·“黑客”教你如何远程控制计算机
- ·网络黑客新手入门必备知识
- ·网吧必杀:如何进入网吧主机
- ·《一份详尽的 IPC$入侵资料》第二版
- ·菜鸟都可以入侵一个网吧的所有电脑
- ·推荐使用的一些黑客软件
- ·黑客必备命令-FTP命令
- ·DOS中常用的网络相关命令
- ·Ollydbg——轻松文本 2003 V6.13(VB)
- ·流光教程一
- ·菜鸟变黑客高手
- ·无线网络攻防实战:WEP密钥如何被攻破的
- ·流光5.0使用小窍门
- ·与RC加密算法的第一次亲密接触
- ·公钥密码系统及RSA公钥算法
- ·CheckFiles V1.8破解
- ·“僵尸时代”来临 李俊熊猫烧香专杀失效
特别推荐
- ·安全防范:黑客Web欺骗的工作原理和解决方案
- ·无线网络攻防实战:WEP密钥如何被攻破的
- ·攻击新方法:利用PStore接口获取帐号信息
- ·推荐使用的一些黑客软件
- ·网吧必杀:如何进入网吧主机
- ·黑客必备命令-FTP命令
- ·CheckFiles V1.8破解
- ·DOS中常用的网络相关命令
- ·什么是IPC$漏洞
- ·分析报告:下载者生成器生成的网页木马
- ·黑客入门:如何选择漏洞扫描工具
- ·最详细的黑客入门法则
- ·“黑客”教你如何远程控制计算机
- ·黑客网上疯狂揽生意 300元可破一邮箱
- ·常见木马和未授权远程控制软件的关闭
- ·如何破解系统(5)
- ·DB Commander 2000 PRO(简称DBC_2000)笔记
- ·获取任意用户MD5加密信息的测试程序
- ·菜鸟变黑客高手
- ·一次详细全面的入侵报告
