缓冲区溢出原理学习及实验

本文详细探讨了缓冲区溢出的原理,解释了call指令在函数调用中的作用,以及返回地址如何被影响。通过正常程序与溢出程序的对比,揭示了溢出如何导致程序执行错误。同时,提出了利用缓冲区溢出控制程序执行流程的可能性。
摘要由CSDN通过智能技术生成

缓冲区溢出原理

通俗点说,就是用户输入超出程序的预计,但是程序还是把它存了起来,超出的部分会覆盖掉下一步要执行的命令地址,如果精确操作,就可以通过输入来控制程序下一步执行的指令集,即执行我们的程序。

在这里插入图片描述

call指令的意思是调用某一个函数

返回地址:在执行某一命令前,将下一个要执行的地址入栈,执行完命令,马上开始执行返回地址

main中使用strcp函数,将全局变量名字拷贝给strbuffer,8个字节

观察正常程序

全局变量没有大于strbuffer,拷贝正常
strcp执行完后,由于一切正常,执行返回地址,程序正常结束

观察溢出程序

全局变量大于strbuffer,执行拷贝后意外覆盖了返回地址
使得返回地址是无效值,
执行完毕,当程序执行返回地址的时候,发现无效,报错

利用方式

假设我们覆盖的是一个有效的返回地址
在该地址处又包含着有效的指令
系统就会执行
我们可以构造有效地址,将我们想要系统执行的代码写入到这个地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值