好文档 - 专业文书写作范文服务资料分享网站

网络安全系统实验报告材料-缓冲区溢出攻击 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

实用文档

调试OverFlowServer.exe得到OverFlow调用返回时的地址,将返回地址与shellcode.shc中的十六数相比较,有三种比较结果:

(1)返回地址是shellcode最后4字节数据。函数返回时执行shellcode。 (2)返回地址没有在shellcode.sh中,缓冲区空间过大,溢出未发生。可以缩小缓冲区空间或在最后8个字节前用0x90(空指令)补充。

(3)返回地址在shellcode.shc中(不是最后4字节数据),缓冲区空间过小。放大缓冲区空间。

当改变TempBuffer缓冲区大小时,其首地址可能会发生变动,调试确定TempBuffer首地址,重新填写CreateShellCode.cpp,并重新生成shellcode.shc。

调试可知:overflow入口地址为0x00401102,子程序返回地址应为0x00401107

实用文档

调试至jump,找到程序将返回地址存在0x0012FB1C处

调试进入memcpy,发现shellcode从0x0012F968处开始写

由此可算出shellcode的长度应为0x0012FB1C+4-0x0012F968=0x1B8=440,缓冲区大小应设为432

实用文档

将overflowserver缓冲区大小设置为432,调试至memcpy得到TempBuffer入口点0x0012F968

修改createShellCode最后4字节为0x0012F968,在最后8字节之前添加\\x90直到生成的shellcode长度为440

运行overflowserver,当overflow子程序运行完后,指针移动到0x0012FB1C处获得返回原程序地址,此时由于shellcode的最后4字节覆盖了该返回地址,使得程序跳转到shellcode开头执行shellcode程序,而shellcode中含有原程序中overflow下一条语句的开始地址,所以执行完后会跳转至原程序的下一条语句继续执行

经过多次调试后确定缓冲区大小,当满足第一种比较结果时,缓冲区溢出就可以执行下去。运行程序,查看系统用户jlcss(若jlcss用户已存在,请先将其删除再运行程序)及其所属用户组。

四 实验小结

栈是一个后进先出的结构,函数在入栈时,先将返回地址RET压入栈,接着是EBP基址寄存器,然后根据局部变量的大小,开辟一定大小的缓冲区,再将局部变量压入。

在将局部变量压入栈的时候,如果压入数据过长,大于事先声明的缓冲区大小,就会覆盖EBP和RET。

实用文档

漏洞的利用有5个方面的问题需要考虑。

一是RET的定位,要用我们的地址覆盖RET,就需要先知道RET在哪,也就是我们定好的这个地址,应该放在字符串的什么位置。

二是要寻找一个跳转指令,将这个指令的地址填充到RET,这样才能在返回时通过跳转指令转到其它地方执行程序

三是要构造shellcode,也就是完成一些特定的功能。 四是将所构造的shellcode放在跳转指令转向的地方。

最后一个步骤就是根据上面的这些分析过程,将它们整合成攻击程序,运行这个攻击程序就能直接利用缓冲区溢出漏洞。

网络安全系统实验报告材料-缓冲区溢出攻击 - 图文 

实用文档调试OverFlowServer.exe得到OverFlow调用返回时的地址,将返回地址与shellcode.shc中的十六数相比较,有三种比较结果:(1)返回地址是shellcode最后4字节数据。函数返回时执行shellcode。(2)返回地址没有在shellcode.sh中,缓冲区空间过大,溢出未发生。可以缩小缓冲区空间
推荐度:
点击下载文档文档为doc格式
7583o5xgwm0zn011oo6h6et871df1c0192d
领取福利

微信扫码领取福利

微信扫码分享