缓冲区溢出——远程代码执行问题
2017-06-06 12:37
459 查看
1、 缓冲区溢出——远程代码执行问题
![](http://img.blog.csdn.net/20170606123412138?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHNiMjQ2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如上图,如果再输入数据时,不加以限制,则会出现,输入的数据覆盖19FEEA之后的区域,当覆盖到19FEEC区域的时候,就会影响到函数的返回执行代码。所以,如果用一段精心设计的代码,就可以执行任何想执行的操作(覆盖修改了函数的的返回地址,将返回地址改到19FEE0,就可以执行输入的代码了)
策略:
① 对输入的地方进行长度验证,比如上图的地方,就应该验证 %9s,因为数组的长度是10,而当输入一个值的时候,编译器会自动在输入的值的末端加上 \0,而这个\0是不会计入数组长度的,如果输入10的值的话,就会覆盖到数组后面的一个内存地址,所以才限制为%9s
② VS高版本都已经默认打开了随机基地址的编译选项,程序每次运行的时候,函数地址是不同的,所以这样攻击方式的难度也大大提高了
如上图,如果再输入数据时,不加以限制,则会出现,输入的数据覆盖19FEEA之后的区域,当覆盖到19FEEC区域的时候,就会影响到函数的返回执行代码。所以,如果用一段精心设计的代码,就可以执行任何想执行的操作(覆盖修改了函数的的返回地址,将返回地址改到19FEE0,就可以执行输入的代码了)
策略:
① 对输入的地方进行长度验证,比如上图的地方,就应该验证 %9s,因为数组的长度是10,而当输入一个值的时候,编译器会自动在输入的值的末端加上 \0,而这个\0是不会计入数组长度的,如果输入10的值的话,就会覆盖到数组后面的一个内存地址,所以才限制为%9s
② VS高版本都已经默认打开了随机基地址的编译选项,程序每次运行的时候,函数地址是不同的,所以这样攻击方式的难度也大大提高了
相关文章推荐
- 关于SSH远程登录和远程连续执行代码的一些问题
- 执行、获取远程代码返回:file_get_contents 超时处理的问题详解
- 执行、获取远程代码返回:file_get_contents 超时处理的问题详解
- RPC 接口中的缓冲区溢出可能允许执行代码
- 《Thinking in Java》RMI远程方法示例代码运行是可能遇到的问题及解决方法
- asp.net下模态对话框关闭之后继续执行服务器端代码的问题
- 远程执行CMD命令部分代码
- 阿里巴巴支付宝远程代码执行漏洞-0DAY
- JBOSS远程代码执行漏洞
- 调试web service的问题:无法自动进入并单步执行服务器。未能调试远程过程。
- 解决this.disabled=true;不能执行服务器端代码的问题(点击后按钮变不可用状态)
- 解决ssh远程执行命令无法使用awk的问题
- discuz!7.1、7.2远程代码执行漏洞exp
- JBOSS远程代码执行漏洞
- try{}catch{}finally{} 里的代码的执行顺序问题
- 解决定时执行代码可能跳过的问题
- 关于模态对话框关闭之后继续执行服务器端代码的问题
- Office远程代码执行漏洞补丁(905413)
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。问题的解决方法!
- Adobe Reader和Acrobat远程代码执行漏洞