| 关键词: 函数 缓冲区 func 内存 Buffer Overflow 思意 变量 顾名 进程 |
内容: 本文主要讲解有关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的 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|