信安(lab1)翻译版.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信安(lab1)翻译版

Lab1:Buffer ?OverFlow(上午刚翻译的,用谷歌,有不通顺之处,谅解,时间紧任务重,但大部分应该可以,不影响做实验有不妥之处请看英文原版。本人梅冬,喜欢share,愿共同进步)实验概况重要提示:本课程的实验,包括这个实验,要求你设计一个漏洞,并进行攻击。这些漏洞和攻击是很现实,你也许可以用它来进行实际的攻击,但你却不应该这样做。该漏洞设计的唯一目标是教你如何防范他们,而不是如何利用它们来攻击别人 - 攻击计算机系统是非法的,可以让你陷入严重的麻烦。不要这样做。在这个实验中,你就会明白缓冲区溢出的代价和明白的攻击怎么发生在现实世界中的应用(比如Web服务器);实验环境设置? ? ?下载SEED-Ubuntu12.04,与VirtualBox或VMWare的打开它。不要做你的裸机上的练习,它可能会咬自己。? ? ?注:VM账户? ? ? ? ? ?ID:root密码:seedubuntu? ? ? ? ? ?ID:种子密码:DEES? ? ?下载 ?Lab1-code实验需求这里有两种练习:常规练习和挑战的一种。挑战练习可能不是那么难,但可能会涉及大量代码的黑客。您需要做的是所有的常规练习。所有的挑战练习是可选的(但鼓励你尝试一下)。切入程序当你做完实验,压缩你的解决方案,并提交给学校的信息系统注意:您提交的应包括所有要求在每次锻炼的问题。A部分:缓冲区溢出校长? ? ? 在这部分实验中,你将学习缓冲区溢出的基本原理,然后你将学习如何使用缓冲区溢出攻击一个简单的漏洞的程序,一些基本定理的意志助理你实现目标。? ? ?现在,解压缩lab1-code.zip,浏览我们提供的源代码,并找出文件stack1.c。在这个文件中有一个简单的C程序,其中有缓冲区溢出漏洞。您可以使用下面的命令编译这个程序:? ? ? $ make stack1$ ./stack1注:查看Makefile文件,你应该知道为什么命令make stack1可以编译源文件stack1.c,并注意-g选项,当你使用gdb来调试可执行文件,这将是非常有用的。堆栈布局和缓冲器?在计算机科学中,调用堆栈**是一个堆栈式的数据结构,保持信息和函数调用和返回。 堆栈布局是使用堆栈帧的约定。举个例子,读给你简单的C程序(C文件stack1.c)。当函数main调用函数func,堆栈布局看起来像下面,要特别注意的局部变量和参数。+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+ high address| ... || stack frame of || main || ... |+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+| str(a pointer) | (4bytes)| return address | (4bytes)%ebp‐‐‐‐ | saved %ebp | (4bytes)+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+| buf[11] || ... | (12bytes)buf‐‐‐‐ | buf[0] || variable_a | (4bytes)| ... |+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+ low addressExercise 1.现在,您可以编写一些代码。你的任务是打印变量缓冲区的地址,在C程序stack1.C,并编译C程序同上。运行三次,观察并address.txt中写下输出地址,是这3个地址相同或不?Challenge!读取文件/ proc/ PID/你的机器上的地图(pid是进程ID),观察堆栈的值;注意:你可以阅读这篇文章,了解ASLR在linux系统上是多么的有效。Exercise 2.用GDB调试程序,如下。您可能会发现在线gdb的文档非常有用。$ gdb stack1(gdb) b funcBreakpoint1at0x8048412: file stack.c, line8.(gdb) rStarting program: /tmp/stack18strcpy(buffer,str);(gdb) info reax0x80484e8134513896ecx0xbffff504 ‐1073744636edx0xbffff494 ‐1073744748ebx0xb7fc8000 ‐1208188928esp0xbffff4100xbffff410ebp0xbffff4380xbffff438esi0x00edi0x00eip08048412eflags0x282 [ SF IF ]cs0x73115ss0x7b123ds0x7b123es0x7b123fs0x00gs0x3351(gdb) x/2s0x80484e80x80484e8:I am greater than 12 bytes0x8048503:(gdb)

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档