Linux下栈溢出是什么原因,栈溢出的程序是怎样的
Admin 2022-07-19 群英技术资讯 728 次浏览
在linux中,栈溢出的原因是系统栈是由高地址往低地址增长,而数据的写入是按低地址往高地址的顺序写入,所以程序一旦没有对输入的字符数量做出限制,就会存在数据溢出当前栈的可能。栈溢出是缓存区溢出的一种,本质上是写入栈的数据超过栈的大小造成的。
本教程操作环境:linux7.3系统、Dell G3电脑。
概述
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等;和堆相比,栈通常很小,在Linux下,通过ulimit -s可以查看栈的大小。
所谓栈溢出,是缓冲区溢出的一种,本质上是写入栈的数据超过栈的大小,使得数据写入其他单元,往往造成不可预期的后果,最常见的就是程序崩溃。
造成栈溢出的原因
系统栈是由高地址往低地址增长的, 而数据的写入是按低地址到高地址的顺序写入. 如果程序没有对输入的字符数量做出限制, 就存在数据溢出当前栈帧以及覆盖返回地址的可能, 从而实现控制程序的执行流。
实例如下
一个栈溢出的程序:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要来教一教大家Linux VPS如何查看Inodes数目,有需要的小伙伴可以随时来参考阅读下,接下来的时间就让小编来大家一探究竟吧!千万不要错过了。
linux中添加用户的命令是:useradd或adduser。这两个命令都可以用来建立用户账号,并创建用户的起始目录,使用权限是超级用户。账号创建成功后,可以使用passwd命令来设定账号的密码。
linux挂载硬盘的命令是mount。具体方法:首先执行【mkdir -p 目录名】命令创建一个挂载点;然后执行【mount -t ntfs /dev/sd 挂载点】命令即可完成挂载。
在linux中,ps是“Process Status”的缩写,是监控进程的命令,通过该命令可以查看系统中所有运行进程的详细信息,例如进程的运行状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等;语法为“ps [选项] [--help]”。ps是显示瞬间进程的状态,并不会动态实时监控状态。
linux添加用户命令useradd怎样使用?linux下添加用户命令有useradd和adduser,这篇文章主要介绍useradd的使用,而useradd命令与adduser命令差不多,接下来我们具体的了解看看useradd命令。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008