词条信息

admin
admin
超级管理员
词条创建者 发短消息   

相关词条

热门词条

更多>>
什么是端口?到底是做什么的呢?
端口一般指两种,一种是硬件比如路由器或者交换机的插网线的端口,一种是软件的逻辑的概念,比如http的80端口!...
7种进阶方法让你快速测试端口连通性
Ping是Windows、Linux和Unix系统下的一个检查网络连通性的命令工具,对于大部分互联网用户来说很...
电脑开机,总需要按F1,是什么原因造成的?
一.主板掉电这个说法是行业内的叫法了,一般是主板的CMOS电池没电了导致的。也是最常见的一种提示你按F1的提示...
社保降费对个人有什么影响?
下调城镇职工基本养老保险单位缴费比例是政府给企业发的一个大红包,特别是对于企业来说是一个利好,但是对个人来说有...
车辆“出险”对下年保费的影响,到底有多大?
【出险对交强险的影响】【出险对商业险的影响】车辆“出险”对下年保费的影响,到底有多大?这里有必要先提下车险第三...

精选图集

更多>>
简易百科旧版 >>所属分类 >> 网络安全   

缓冲区溢出漏洞原理

标签: 网络安全 缓冲区 溢出漏洞

顶[0] 发表评论(0) 编辑词条

  现在的网络安全领域由各种各样的门派,最火的莫属web领域的网络安全,还有物联网安全等等。缓冲区溢出安全漏洞有一种忽视的感觉,起始最开始的、最有威力的还是缓冲区溢出漏洞,很多零日漏洞也是基于缓冲区漏洞的,最具破坏力的也是缓冲区漏洞。这篇文章简单讲解一下缓冲区漏洞的原理知识,后期结合metasploit和靶机系统,推出实战方面的课程。


目录

1. 内存攻防技术编辑本段回目录


  很多学习网络安全的人员有这样的一种感觉,对于缓冲区溢出、栈溢出、堆溢出、shellcode等有一定的了解,模模糊糊的了解术语和概念,但是如果实践编写一些渗透代码时,总感觉无从下手,也许是没有迈过技术门槛。


  内存攻击指的是利用软件的安全漏洞,构造恶意的输入导致软件在处理输入数据是出现非预期的错误,导致数据被写到特定的位置,改变了软件的控制流程,转而执行外部输入的指令,造成目标系统被远程控制或者拒绝服务。


内存攻击的3个重点:


  软件存在安全漏洞

  恶意的输入触发安全漏洞

  改变软件的控制流程


2. 缓冲区溢出漏洞机制编辑本段回目录


  缓冲区溢出漏洞是由于程序没有对缓冲区的边界条件进行检查,导致引发的异常行为,向缓冲区写入数据,内容超过了程序员设定的缓冲区边界,覆盖了相邻的内存区域,覆盖了其他变量还有可能影响程序的控制流程。


  这里举个例子,如下图所示,内存中存在两个相邻的变量,A是char[]类型的,用于接收外部的数据,输入为8个字节,B是短整型的,B的初始值是65535(0xffff)。如果用户输入的是"abcdefghi",9个字节,那么B就被修改为0x0069,如下图所示


根据缓冲区位置的不同,可以分为:

  栈溢出(Stack Overflow)

  堆溢出(Heap Overflow)


3. 栈溢出漏洞原理编辑本段回目录


  栈是由操作系统创建和维护的,支持程序内的函数调用功能。


  函数调用时,程序会将返回地址压入栈中,执行换被调用函数的代码后,通过ret命令从栈中弹出返回地址,放入eip寄存器,继续程序的运行。


  栈溢出的原理:程序向栈中写入数据时,当写入的数据长度超过栈分配的缓冲区空间时,就造成了栈溢出。


栈溢出最常见的利用方式有:

  覆盖函数返回地址

  覆盖异常处理结构


  这里举个例子,说明覆盖函数返回地址的情况,一般发生在函数调用时,程序将主程序的下一条指令地址保存到栈中,子函数执行结束后,从栈中弹出主程序的指令地址,继续执行。这样程序的返回地址、函数的调用参数、局部变量均位于同一个栈中,就给栈溢出改写程序流程提供了机会。看下面一段代码


#include<string.h> 

void foo(char *bar) 

{  

 char c[8]; 

 strcpy(c,bar); 

} 

int main() 

{ 

char array[]='abcdabcdabcd\x18\xff\x18\x00'; 

foo(array); 

return 0; 

} 


  注意上述代码中的strcpy(c,bar)并没有进行边界检查,这段代码执行结束前后的堆栈空间的分配情况如下图所示。源字符串array的16个字符复制到C中,最后的4个字符覆盖了栈的返回地址,改为0x0018ef18,当函数foo返回之后,程序就会跳转到0x0018ef18这个地址执行相关指令。





 

 

附件列表


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇Safari信息泄露漏洞分析
下一篇MapReduce运行原理

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的百科词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>