C语言源程序的缓冲区溢出漏洞分析及解决方案

C语言源程序的缓冲区溢出漏洞分析及解决方案第22卷第3期沈阳化工学院学报JOURNALOFSHENYANGINSTITUTEOFCHEMICALTECHNOLOGY____.9Vol.22No.3Sep.____:1004-4639(____)03-0265-04C语言源程序的缓冲区溢出漏洞分析及解决方案刘俊,张枫(沈阳化工学院计算机科学与技术学院,辽宁沈阳110142)摘要:着重分析一些存在缓冲区溢出攻击漏洞的C语言函数,介绍具有哪些特点的C函数容易受到缓冲区溢出攻击,并借此更加深入地了解缓冲区溢出攻击机制.探讨了缓冲区溢出攻击程序的结构.最后提出避免缓冲区溢出攻击的方法.该方法从C函数和攻击程序两方面入手,通过避免或正确使用有缓冲区溢出攻击漏洞的C语言函数;了解恶意程序代码的结构识别恶意程序代码,达到避免缓冲区溢出攻击的目的.关键词:缓冲区;溢出;安全攻击:TP393108文献标识码:A缓冲区溢出攻击一直以来都是黑客攻击的主要手段,其原因很大程度上取决于C或C++程序中的许多存在缓冲区溢出漏洞的函数.这些漏洞导致缓冲区溢出相对于其他攻击方式容易实现.缓冲区溢出攻击,轻者可导致计算机系统的混乱,重起或死机,更加严重的会使攻击者有机会得到被攻击主机的超级权限,从而控制主机,执行一些破坏行为.如:偷取重要资料,查看内部保密信息,篡改重要文件,删除有用的数据等等.但由于攻击者取得了被攻击主机的超级权限,他可以删除这台主机活动日志中的记录,使得他能够长期控制这台主机而且还不会被机主发现.其后果非常严重.研究过的相关问题未从C函数的细节剖析C语言的缓冲区溢出机制.本文借C语言中一些不安全的库函数的研究,从更细化方面来深入地说明缓冲区溢出机制的原理,并就避免缓冲区溢出攻击提出一些建议和意见.[1]存低地址到高地址依次为:代码段,数据段,堆栈段.其中代码段顾名思义存放的是程序)))机器码和一些只读数据;数据段存放的则是程序中的静态数据;堆栈段存放的是程序中的动态数据,包括一些局部变量,函数中传递的参数等[2].缓冲区溢出就是利用程序在内存堆栈段的溢出来实现的.堆栈的增长方向与内存的方向相反.栈底是内存的高端,栈顶则是内存的低端.栈底指针是不会改变的,出入栈时都是从栈顶进行,即栈顶指针在变化,满足栈的后进先出原则.当一个函数被调用时,栈中的变化如下:首先将参数入栈;其次是指令寄存器中的EIP作为函数返回地址入栈;然后将基址寄存器中的EBP入栈,最后将所调函数中的局部变量入栈,同时将栈顶指针减去局部变量所用的空间作为新的栈顶[2].以下的代码1:主函数main调用函数function并造成数组越界的过程[3]._include_《stdio1h_》_include_《string1h_》voidfunction(char_str){charbuffer[1];strcpy(buffer,str);1C函数的分析111C语言中函数的存储及执行函数在内存中的存储,大致分为三段.由内收稿日期:____-05-07作者简介:刘俊(1971-),男,辽宁沈阳人,副教授,硕士,主要从事计算机网络方面的研究.

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?