Linux下栈溢出是什么原因,栈溢出的程序是怎样的
Admin 2022-07-19 群英技术资讯 1198 次浏览
本篇内容介绍了“Linux下栈溢出是什么原因,栈溢出的程序是怎样的”的有关知识,在实际项目的操作过程或是学习过程中,不少人都会遇到这样的问题,接下来就让小编带大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,栈溢出的原因是系统栈是由高地址往低地址增长,而数据的写入是按低地址往高地址的顺序写入,所以程序一旦没有对输入的字符数量做出限制,就会存在数据溢出当前栈的可能。栈溢出是缓存区溢出的一种,本质上是写入栈的数据超过栈的大小造成的。

本教程操作环境:linux7.3系统、Dell G3电脑。
概述
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等;和堆相比,栈通常很小,在Linux下,通过ulimit -s可以查看栈的大小。
所谓栈溢出,是缓冲区溢出的一种,本质上是写入栈的数据超过栈的大小,使得数据写入其他单元,往往造成不可预期的后果,最常见的就是程序崩溃。
造成栈溢出的原因
系统栈是由高地址往低地址增长的, 而数据的写入是按低地址到高地址的顺序写入. 如果程序没有对输入的字符数量做出限制, 就存在数据溢出当前栈帧以及覆盖返回地址的可能, 从而实现控制程序的执行流。
实例如下
一个栈溢出的程序:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
linux查看用户组下所有用户的两种方法:1、使用cat和grep命令查看用户组配置文件“/etc/group”中的内容,并过滤输出指定用户组的信息即可,语法“cat /etc/group|grep 组名”,可以输出指定用户组中的用户列表。2、使用“sudo yum members”命令安装members工具包,执行“members 组名”命令列出指定用户组下所有的用户即可。
原因:1、Linux支持丰富的网络协议栈,无论嵌入式项目需要WiFi、移动宽带还是以太网连接,Linux上都支持NetworkManager等系统网络服务;2、模块化,通过将几个软件包组合在一起形成一个Linux操作系统堆栈,嵌入式开发人员可以出于任何目的对其进行定制;3、安全性高,能保证嵌入式项目的安全;4、可提供丰富的驱动程序,还可使得驱动和应用程序并行开发,加快开发速度。
在linux中,工作目录又称“当前目录”,是用户登录Linux系统后,在文件系统中当前所在的目录;用户在该目录下的一系列操作,相当于在该目录下工作,所以叫”工作“目录。工作目录是可以随时改变的,使用cd命令即可切换工作目录,语法“cd [相对路径或绝对路径]”。
解决方法:1、使用“sudo ufw disable”命令关闭防火墙;2、使用“sudo /etc/init.d/ssh restart”命令开启远程服务;3、打开22端口号。
在linux中,静态路由是路由项由手动设置的一种路由方式;即使网络状态已经改变或重新被组态,静态路由也是固定不变的,静态路由由网络管理员逐项加入路由表,可用“route add -net 增加到某个网段的路由”语句在linux中增加路由。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008