欢迎来到天天文库
浏览记录
ID:19576489
大小:63.00 KB
页数:14页
时间:2018-10-03
《如何编写自己的缓冲区溢出利用程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、如何编写自己的缓冲区溢出利用程序?作者:黑猫(virtualcat@hotmail.com)[文章出自:www.fanqiang.com]内容: 本文主要讲解有关Buffer Overflow的原理, 以及结合实战范例介绍Linux和Solaris下的漏洞利用. 本文并不介绍如何编写shell code.要求: 读者要有一点C和汇编语言基础.目标: 希望本文能够尽量做到通熟易懂,使得稍有计算机基础知识的朋友看后能够亲自动手写自己的Exploit 如果你觉得自己对这些都懂了, 就请不要再往下看了.
2、 第一部份 概述篇1. Buffer overflow是如何产生的? 所谓Buffer overflow, 中文译为缓冲区溢出. 顾名思意, 就是说所用的缓冲区太小了, 以至装不下 那么多的东西, 多出来的东西跑出来了. 就好象是水缸装不了那么多的水, 硬倒太多会溢出来一样;) 那么, 在编程过程中为什么要用到buffer(缓冲区)呢? 简单的回答就是做为数据处理的中转站.2. UNIX下C语言函数调用的机制及缓冲区溢出的利用. 1) 进程在内存中的影像. 我们假设现在有一个程序, 它的函数调用顺序如下.
3、 main(...) -> func_1(...) -> func_2(...) -> func_3(...) 即: 主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3 当程序被操作系统调入内存运行, 其相对应的进程在内存中的影像如下图所示. (内存高址) +--------------------------------------+
4、 ......
5、 ... 省略了
6、一些我们不需要关心的区 +--------------------------------------+
7、 env strings (环境变量字串)
8、 +--------------------------------------+
9、 argv strings (命令行字串)
10、 +--------------------------------------+
11、 env pointers (环境变
12、量指针)
13、 SHELL的环境变量和命令行参数保存区 +--------------------------------------+ /
14、 argv pointers (命令行参数指针)
15、 / +--------------------------------------+ /
16、 argc (命令行参数个数)
17、 / +--------------------------------------+
18、
19、 main 函数的栈帧
20、 +--------------------------------------+
21、 func_1 函数的栈帧
22、 +--------------------------------------+
23、 func_2 函数的栈帧
24、 +---------------------------------
25、-----+
26、 func_3 函数的栈帧
27、 Stack (栈) +......................................+ /
28、
29、 / ...... /
30、
31、
32、 / +..............
此文档下载收益归作者所有