- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC缓冲区溢出攻击分析与防范策略
VC++缓冲区溢出攻击的分析与防范策略
[摘要]首先解释了缓冲区溢出的概念和溢出原理,并在VC++环境下比较了缓冲区非溢出、下标越界溢出、堆溢出、综合代码和激活记录溢出四种情况,由此总结出了避免缓冲区溢出的基本方法;其次通过一个导致缓冲区溢出的小程序对缓冲区溢出攻击的产生进行了实例分析,总结出缓冲区溢出攻击的类型;最后,从静态防范和动态防范两个方面提出了溢出的防范策略,缓冲区溢出攻击的分析与防范对网络信息安全具有非常重要的意义。
[关键词]缓冲区;堆溢出;静态防范:攻击
一、缓冲区溢出概念
缓冲区是用户为程序运行时在计算机中申请的一段连续的内存,它保存了给定类型的数据。缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。为了达到这个目的,攻击者必须达到如下的两个目标:(1)程序的地址空间里安排适当的代码。(2)通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。
二、缓冲区溢出概念危害
在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务;另外一种是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。
三、缓冲区溢出的原理
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:
void function(char*str){
char buffer[16];
strcpy(buffer,str);}
上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。存在像strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。当然,随便往缓冲区中填东西造成它溢出只会出现“分段错误”(Seg-mentation fault),而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。
缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍,并且易于实现。缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者所想要的一切,植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,而得到被攻击主机的控制权。在1998年Lincoln实验室用来评估入侵检测的的5种远程攻击中,有2种是缓冲区溢出。在1998年CERT的13份建议中,有9份与缓冲区溢出有关,在1999年,至少有半数的建议和缓冲区溢出有关。在Bugtraq的调查中,有2/3的被调查者认为缓冲区溢出漏洞是一个很严重的安全问题。
缓冲区溢出漏洞和攻击有很多种形式,会在第二节对他们进行描述和分类。相应地防卫手段也随着攻击方法的不同而不同,将在第四节描述,它的内容包括针对每种攻击类型制定有效的防卫手段。
四、缓冲区溢出分类
1.堆栈溢出。破坏系统堆栈中被调用函数的返回地址是缓冲区溢出攻击者最常用的方法。首先通过输入大量的数据,以此造成缓冲区溢出,如果溢出改变了堆栈中保存的函数返回地址,则函数返回时,可使程序转向执行其它指令,以达到攻击的目的。攻击代码一般是类似于exce(“sh”)的这样能获得系统控制权的程序。通常情况下攻击者输入的超长字符串实际上是含一个二进制机器语言的小程序,这就是攻击代码。因此,改变的函数返回地址将指向溢出数据,也就是这段攻击代码。
2.修改函数指针溢出。如果程序中使用了函数指针变量,例如类似于“void(*foo)()”这样的语句。函数的指针可能位于堆栈静态数据区中等,如果被攻击者攻击的缓冲区点恰好就在某个指针的附近,攻击者就有机会修改函数指针,当程序通过指针变量调用该函数时就会转去执行攻击者事先放置的代码。
3.长跳转溢出。在c语言中包含了一个简单的检验/恢复系统,称为“set jmp/long jmp”,意思是
您可能关注的文档
- QFII对股市影响中外比较.doc
- QQ高校学生会工作新载体.doc
- 对教育公共投入差异与地方财政能力研究.doc
- RAPEX提高欧盟技术性贸易壁垒有效性手段.doc
- RADIUS协议下校园用户管理系统研究.doc
- RAROC技术在银行资本金配置中应用研究.doc
- RAROC模型在我国银行业激烈竞争中应用.doc
- RBC外资银行战略布局.doc
- RCS-915A型微机母线保护应用中应注意问题.doc
- REACH制度“注册难题”.doc
- 甘肃省白银市会宁县第一中学2025届高三3月份第一次模拟考试化学试卷含解析.doc
- 2025届吉林市第一中学高考考前模拟生物试题含解析.doc
- 四川省三台县芦溪中学2025届高三下第一次测试生物试题含解析.doc
- 2025届江苏省启东市吕四中学高三适应性调研考试历史试题含解析.doc
- 浙江省宁波市十校2025届高三二诊模拟考试历史试卷含解析.doc
- 甘肃省甘南2025届高考生物必刷试卷含解析.doc
- 河北省石家庄市一中、唐山一中等“五个一”名校2025届高考历史四模试卷含解析.doc
- 江西省南昌市进贤一中2025届高考生物考前最后一卷预测卷含解析.doc
- 甘肃省白银市会宁县第四中学2025届高三第二次模拟考试历史试卷含解析.doc
- 宁夏银川市宁夏大学附属中学2025届高考化学押题试卷含解析.doc
最近下载
- 超星尔雅舌尖上的潮州菜(韩山师范学院)章节测验答案.docx
- 部编版二年级语文上册《10日月潭(第一课时)》课件.ppt VIP
- 品保部门三级文件70产品召回撤回制度.pdf
- 《中国少年先锋队章程》.docx
- 第五届全国高师学生英语教师职业技能竞赛初赛(二级)试题.doc VIP
- (附件)V1_V1_V1_2.广西路桥工程集团有限公司桥面防撞墙施工工艺流程标准.doc VIP
- 通线(2016)8425-Ⅱ铁路信号标志(第二分册:高速铁路信号标志).pdf
- 青岛版小学科学三年级上册五、六单元教材分析解读.pptx VIP
- 应用文写作(第3版)-配套课件.pptx
- 部编版二年级语文“不同故事中的狐狸”群文阅读教学设计.docx VIP
文档评论(0)