| 如何编写自己的缓冲区溢出利用程序? |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:21:00
|
内容: 本文主要讲解有关Buffer Overflow的原理, 以及结合实战范例介绍Linux和Solaris下的漏洞利用. 本文并不介绍如何编写shell code.
要求: 读者要有一点C和汇编语言基础.
目标: 希望本文能够尽量做到通熟易懂,使得稍有计算机基础知识的朋友看后能够亲自动手写自己的Exploit 如果你觉得自己哉庑┒级? 就请不要再往下看了.
第一部份 概述篇
1. Buffer overflow是如何产生的? 所谓Buffer overflow, 中文译为缓冲区溢出. 顾名思意, 就是说所用的缓冲区太小了, 以至装不下 那么多的东西, 多出来的东西跑出来了. 就好象是水缸装不了那么多的水, 硬倒太多会溢出来一样;) 那么, 在编程过程中为什么要用到buffer(缓冲区)呢? 简单的回答就是做为数据处理的中转站.
2. UNIX下C语言函数调用的机制及缓冲区溢出的利用. 1) 进程在内存中的影像. 我们假设现在有一个程序, 它的函数调用顺序如下. main(...) -> func_1(...) -> func_2(...) -> func_3(...) 即: 主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3
当程序被操作系统调入内存运行, 其相对应的进程在内存中的影像如下图所示.
(内存高址) +--------------------------------------+ | ...... | ... 省略了一些我们不需要关心的区 +--------------------------------------+ | env strings (环境变量字串) | \ +--------------------------------------+ \ | argv strings (命令行字串) | \ +--------------------------------------+ \ | env pointers (环境变量指针) | SHELL的环境变量和命令行参数保存区 +--------------------------------------+ / | argv pointers (命令行参数指针) | / +--------------------------------------+ / | argc (命令行参数个数) | / +--------------------------------------+ | main 函数的栈帧 | \ +--------------------------------------+ \ | func_1 函数的栈帧 | \ +--------------------------------------+ \ | func_2 函数的栈帧 | \ +--------------------------------------+ \ | func_3 函数的栈帧 | Stack (栈) +......................................+ / | | / ...... / | | / +......................................+ / | Heap (堆) | / +--------------------------------------+ | Uninitialised (BSS) data | 非初始化数据(BSS)区 +--------------------------------------+ | Initialised data | 初始化数据区 +--------------------------------------+ | Text | 文本区 +--------------------------------------+ (内存低址)
这里需要说明的是: i) 随着函数调用层数的增加, 函数栈帧是一块块地向内存低地址方向延伸的. 随着进程中函数调用层数的减少, 即各函数调用的返回, 栈帧会一块块地 被遗弃而向内存的高址方向回缩. 各函数的栈帧大小随着函数的性质的不同而不等, 由函数的局[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: javascript与Java的区别 下一篇文章: 隐藏自己 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |