格式字符串漏洞案例研究
一、格式字符串攻击概述
格式字符串攻击的目标是通过覆盖数据来控制程序的执行。这种攻击依赖于在使用如 printf() 等格式函数时出现的编程错误或捷径。如果被测试的软件部分或全部使用 C、C++ 或 Perl 编写,就有可能使用到一个或多个格式函数。
这种漏洞的根本原因在于,这些语言允许函数通过从栈中“弹出”任意数量的参数来接受任意数量的参数,并依赖早期的参数来指示还需要弹出多少额外参数以及它们的数据类型。当未经过滤的用户输入作为格式字符串时,就会产生漏洞。
二、易受攻击的 ANSI C 函数
以下是可能易受格式字符串攻击的基本 ANSI C 函数:
| 函数名 | 功能描述 |
| ---- | ---- |
| fprintf | 输出到文件流 |
| printf | 输出到标准输出流 |
| sprintf | 输出到字符串 |
| snprintf | 输出到字符串并进行长度检查 |
| vfprintf | 从 va_arg 结构输出到文件流 |
| vprintf | 从 va_arg 结构输出到标准输出流 |
| vsprintf | 从 va_arg 结构输出到字符串 |
| v
超级会员免费看
订阅专栏 解锁全文
6773

被折叠的 条评论
为什么被折叠?



