软件安全实验第二次实验报告.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文档。上传文档
查看更多
软件安全实验第二次实验报告

软件安全第二次实验报告班级:2010211316 学号 姓名:曹梦晨1、目标通过对程序输入的密码的长度、内容等修改用Ollydbg来验证缓冲区溢出的发生完成淹没相邻变量改变程序流程实验完成淹没返回地址改变程序流程实验作业要求:详述修改过程实验结果需要截图证明绘制修改原理的图示思考题:通过淹没返回地址直接跳转以及jmp esp两种方法,修改StackOverrun程序的流程,让其调用bar函数并输出结果。2、测试步骤与结果2.1 stackvar程序实验Step1:首先打开stackvar.c建立一个新Win32 Console Application工程,命名为m_stackvar。图2-1 建立m_stackvar工程Step2:这里还是先运行代码进行测试。从代码可以看出,这是一个具有缓冲区溢出漏洞的代码。虽然正确密码是1234567,但是由于buffer只有8个字节,除去’\0’只能存储7个字符。因此只要输入长度为7的字符串,在执行strcpy时,就会覆盖变量authenticated的值为0,造成了登录成功。由于authenticated为0时登陆成功,所以只需要让’\0’覆盖该值,就可以成功登录!但是输入超过长度为8,仍然不能登录成功。图2-2 进行密码输入测试Step3:接下来尝试输入更多的信息,进行溢出测试图2-3 进行溢出输入测试这里发现输入1234567890123共13位时,程序发生了崩溃。Step4:使用olydbg分析图2-4 在strcpy处添加断点输入1234568,观察缓冲区中的数据信息如下图所示:图2-5 观察缓冲区地址信息接下来输入qqqqqqqqrst,查看缓冲区信息: 图2-6 观察缓冲区地址信息(2)在尝试输入0123456789abcdef,发现返回地址被覆盖: 图2-7 观察缓冲区地址信息(3)2.2 stackover_ret程序实验Step1:首先建立一个新Win32 Console Application工程,命名为m_overflow_ret。图2-8 建立m_overflow_ret工程Step2:使用UE对password.txt进行编辑,改变17-20号字符图2-9 使用UE输入返回地址Step3:使用olydbg调试:图2-10 查看缓冲区内容图2-11 程序跳转结果这里可以看出,程序如我们所见到的那样,完成了在地址0040122F处的跳转,这样我们就可以通过控制程序流程,已达到我们所需要的功能。比如运行我们植入的shellcode……3、测试结论这次实验让我了解到,缓冲区溢出的漏洞的危害不仅仅在于有可能被非法登陆,还有可能对服务器端造成无法弥补的损失。比如写入shell code,然后跳转执行,可以获得服务端的控制权。因此,以后要更加注意防范缓冲区溢出漏洞。4、思考题通过淹没返回地址直接跳转以及jmp esp两种方法,修改StackOverrun程序的流程,让其调用bar函数并输出结果。Step1:首先将原工程进行重建,然后将输入部分略作修改,改成由文件input.txt输入字符串。图4-1 重写程序的部分代码Step2:使用VC调试程序,查看对应bar函数的地址图4-2 查看函数入口地址这里可以看到函数的入口地址为0040109B,可以通过淹没地址直接跳转。由于有’\n’,这里必须使用cin.getline(input, 50, ‘\0’)读入,否则字符串会发生截断。但是这样00又读不进去了……所以再改成,cin.getline(input, 50, ‘* ’)。Step3:把input.txt用UE编辑,写入待淹没的地址:图4-3 修改input.txt内容图4-4 程序跳转示意图4-4 程序运行结果示意

文档评论(0)

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

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

1亿VIP精品文档

相关文档