程序攻击原理(一)

程序攻击原理(一)

ID:14261715

大小:45.50 KB

页数:19页

时间:2018-07-27

程序攻击原理(一)_第1页
程序攻击原理(一)_第2页
程序攻击原理(一)_第3页
程序攻击原理(一)_第4页
程序攻击原理(一)_第5页
资源描述:

《程序攻击原理(一)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、程序攻击原理(一)程序攻击原理(一).txt6宽容润滑了彼此的关系,消除了彼此的隔阂,扫清了彼此的顾忌,增进了彼此的了解。bye4gle前言:这篇文章我到现在还没写完,原因就是我太忙了,但我会尽力写完,想让大家知道什么才是高级的hack技巧,什么才是真正的hacking的乐趣,计算机网络世界的万物可以说是程序,攻击网络或者是计算机其实就是程序的攻击,这才是至高的hacking技巧,大家随我来。。。BufferOverflows介绍Generalities大多数的缓冲溢出攻击都是通过改变程序运行的流程到入侵者植入的恶意代码,其主要目的

2、是为了取得超级用户的shell。原理是相当简单的:将恶意指令存放在buffer中,这段指令可以得到进程的控制权,从而达到攻击的目的在这篇文档里我们主要介绍两项bufferoverflow技术:stackoverflows和heapoverflows。ProcessmemoryGlobalorganization当一个程序开始运行的时候,一些基本信息(指令,变量。。。)会事先装入内存,一个进程维护着它自己的一段内存空间,我们称为进程空间(上下文),它维护着进程所需要的代码段,堆栈段和数据段。.在进程空间的高地址区域存放着进程相关的环境变量以及参数:env串,arg串,env指

3、针(如图1.1)..之后的内存空间由两部分组成,stack和heap,它们都在进程运行的时候被分配。stack(栈)用来存放函数参数,局部变量,以及一些允许在一个函数调用之前找回stack的信息。。。stack遵循LIFO的原则(后进先出)来访问系统,并且向内存低地址方向增长。 动态分配的变量存放在heap区;通常,调用malloc函数用来返回一个指针指向一个heap区地址。malloc是用户层的动态分配内存的函数,它总是在heap区分配一段连续的内存空间。..bss和.data区存放全局变量,和一些静态变量(在编译的时候分配)。.data区包含了静态已初始化的数据,.bs

4、s区则包含了未初始化的数据。.最后一个内存区域,.text,包含了程序指令代码和一些只读数据。图1.1:进程空间组织图动口不如动手,我们举几个简单的例子可以让大家更好的理解,让我们看看每种变量不同存储方式:heapintmain(){char*tata=malloc(3);...}tata是一个指针,它指向heap区的一段内存空间的起始地址。.bsscharglobal;intmain(){...}intmain(){staticintbss_var;...}global和bss_var将存储在.bss区。.datacharglobal='a';intmain(){...}

5、intmain(){staticchardata_var='a';...}global和data_var将存储在.data区.函数调用我们现在来分析一下内存(stack)里函数调用过程的细节,并且试着理解有关实现机制。 在unix系统里,一个函数调用的过程可以分为以下三步:准备堆栈:保存当前栈帧指针。一个栈帧可以理解成堆栈里的一个逻辑单元,它描述一个函数的基本单元。一些函数需要的内存信息也被保存。调用:函数的参数和返回地址被保存进堆栈,目的在于函数返回之后程序需要到哪里去继续执行返回(或结束):恢复调用函数之前保存的原来的堆栈。.下面一个简单的代码可以帮助大家理解以上介绍过

6、程是如何工作的,并且这可以让更好掌握bufferoverflow技术。让我们看看这段代码: [e4gle@redhat72e4gle]$cate4glecall.c inte4glecall(inta,intb,intc){inti=4;return(a+i);}intmain(intargc,char**argv){e4glecall(0,1,2);return0;}我们现在用gdb来反汇编上面编译好的程序,目的是为了更透彻的说明以上步骤。这里涉及两个重要的寄存器:指向当前栈帧的EBP,和指向栈顶的ESP。首先,我们看看main函数:(gdb)disassemblemai

7、nDumpofassemblercodeforfunctionmain:0x8048448

:push%ebp0x8048449:mov%esp,%ebp0x804844b:sub$0x8,%esp以上的是main函数的开始部分。如果要详细了解一个函数的细节,可以看后面的e4glecall函数。0x804844e:sub$0x4,%esp0x8048451:push$0x20x8048453:push$0x10x804845

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。