堆栈cookie检测 代码检测到基于堆栈的缓冲区溢出,小白不懂程序哪里出错了,求解答~

#include
#define ROWS 3
#define COLS 5
void display(int ar[][COLS], int n);
void d_display(int ar[][COLS], int n);
int main(void)
{
int array[ROWS][COLS] = {
{ 1, 2, 6, 3, 3 },
{ 6, 5, 2, 3, 2 },
{ 7, 8, 7, 3, 6 }
};

printf("The original Array:\n");
display(array, COLS);
printf("The present Array:\n");
d_display(array, COLS);

return 0;

}
void display(int ar[][COLS], int n)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < COLS; j++)
printf("%d", ar[i][j]);

}
void d_display(int ar[][COLS], int n)
{
int r, c;

for(r=0;r<n;r++)
    for (c = 0; c < COLS; c++)
    {
        ar[r][c] = 2 * ar[r][c];
        printf("%d", ar[r][c]);

    }

}

c
0

2个回答

display(array, COLS);
void display(int ar[][CLS], int n);
传递的是COLS,最终两个for循环访问的是5 * 5。实际上栈中你给分配3 * 5大小,数组越界,覆盖了栈数据,其中包括canary,在程序返回的时候会查看canary值是否变动。
应该是display(array, ROWS);

1
qq_34418311
Seven_Fighter 回复pwd_3: 懂啦,谢谢哈
接近 2 年之前 回复

printf("The original Array:\n");
display(array, ROW);
printf("The present Array:\n");
d_display(array, ROWS);

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
基于堆栈的缓冲区溢出攻击原理
对于操作系统内存中的缓存区溢出的基本原理进行阐述,内嵌有小例子
堆栈的代码
c++的堆栈编程代码,关于栈的进出顺序实现的程序
缓冲区溢出实验
缓冲区溢出实验
堆栈的创建,出栈,入栈等操作
堆栈的创建,出栈,入栈等操作。经过编译可直接使用。
链式存储结构堆栈c程序
这是一个链式存储结构堆栈的c语言实现程序,实现进栈和出栈
MIPS堆栈操作示例
MIPS汇编语言,一个简单的字符串处理程序,描述堆栈操作。
越过 __chkesp 检测的缓冲区溢出
越过 __chkesp 检测的缓冲区溢出
Cortex M0_nRF51822的堆栈和LR例子,含汇编和C,研究函数在调用过程中堆栈和LR的变化
Cortex M0核ARM只支持16位的Thumb指令和部分的Thumb-2指令。在KEIL MDK中演示链接寄存器在BL指令执行时的变化,以及函数在调用过程中堆栈的压栈和出栈,从堆栈区里查看到没有栈帧里所述的PC、SP、FP等压栈。网上一篇文章说"ARM压栈的顺序很是规矩(也比较容易被黑客攻破么),依次为当前函数指针PC、返回指针LR、栈指针SP、栈基址FP、传入参数个数及指针、本地变量和临时变量。"看不懂,并给出了附件截图.
53堆栈和堆缓冲区溢出比较-004.rar 53堆栈和堆缓冲区溢出比较-004.rar
53堆栈和堆缓冲区溢出比较-004.rar
C语言经典堆栈结构源程序(适合学习者使用)
一个经典的C语言堆栈源程序,绝对经典,非常适合学习数据结构的朋友们,当然,也适合自学者。
程序崩溃的时候可生成崩溃堆栈日志的库
以下是调用的方法,在主程序入口函数第一行动态加载异常捕获库,崩溃后可以在运行目录下生成如【进程名称.exception】的文件,可以看到崩溃的堆栈信息 void main() { //Install our crash handler HMODULE hCrashDLL = LoadLibrary("CrashHelper.dll"); if (hCrashDLL == NULL) { printf("Failed to load CrashHelper DLL, Error:%d\n", GetLastError()); return; } else { printf("load CrashHelper DLL ok \n"); } //TODO:开始用户的代码 }
举例说明汇编语言子程序递归调用过程中堆栈内容的变化过程
研讨:举例说明汇编语言子程序递归调用过程中堆栈内容的变化过程。
用链表实现堆栈
用链表实现堆栈 用链表实现堆栈 用链表实现堆栈 用链表实现堆栈
编程中堆栈的区别
很多时候我们在变成的时候会涉及到堆栈的问题,本资源主要对堆和栈进行区分,加以了解
用堆栈完成对各个进制的转换
c语言写的用堆栈完成对各个进制的转换,可以随意输入进制并转换成相应的进制
C++进程堆栈信息分析的方法
C++进程堆栈信息分析的方法,C++进程堆栈信息分析的方法
C++队列堆栈小作业
C++队列堆栈小作业  
用堆栈实现模拟队列
用堆栈实现模拟队列的操作,降低时间复杂度
Java计算器源码含界面(基于堆栈算法实现)
Java计算器源码含界面(基于堆栈算法实现) 本程序适合初学者练习使用。尤其是对栈算法的学习及有好处
堆栈dump文件分析工具
IBM java dump 文件分析工具,分析java堆栈信息
操作系统中的堆栈的经典解释
非常经典的关于操作系统中堆栈的解释,注意不是数据结构中的堆栈,不要下载错了~~
window中DNS溢出.zip
MS07-029,Windows 域名系统 (DNS) 服务器服务的远程过程调用 (RPC) 管理接口中存在基于堆栈的缓冲区溢出。
VHDL程序 基于堆栈的计算器(包括代码和说明文档)
VHDL程序 基于堆栈的计算器(包括代码和说明文档)计算器
内存、堆栈详解
内存、堆栈详解内存、堆栈详解内存、堆栈详解内存、堆栈详解
TrueSTUDIO修改堆栈的方法
一个免费的STM32开发软件,TrueSTUDIO修改堆栈的方法。
登录主控台提示“未检测到加密狗”的原因及解决方案
登录主控台提示“未检测到加密狗”的原因及解决方案 K3加密狗信息丢失
基于深度学习堆栈自动编码器模型的图像去噪python代码
这个存储库包含使用深度学习对高分辨率图像进行分解的工作的代码。目前最先进的方法,如BM3D,KSVD和非本地手段确实能够产生高质量的去噪效果。但是当图像的大小变得非常高时,例如。 4000 x 80000像素,那些高质量的结果以高计算时间为代价。这个耗时的因素可以作为一个动机来提出一个模型,可以在更短的时间内提供可比较的结果,如果不是更好的话。因此,我使用了一种深度学习方法,它会自动尝试学习将噪声图像映射到其去噪版本的功能。
SPIN控件的使用问题
我的程序哪里错了为什么不能调节,,不知道哪里出错了,请大家看看,要写20字真是烦人
检测到不兼容的键盘驱动程序 该对话框已被停用
NULL 博文链接:https://qingcaowg.iteye.com/blog/540857
众数的程序(使用到快速排序)
以下这个众数的程序,帮忙看下哪里出错了?
ZigBee堆栈结构介绍
ZigBee堆栈结构介绍 ZigBee标准定义了一种堆栈协议,这种协议能够确保无线设备在低成本、低功耗和低数据速率网络中的互通作业性。本文简要说明ZigBee标准中规定的ZigBee堆栈结构。
STM32双堆栈及其在uCOS-II中的使用
STM32双堆栈及其在uCOS-II中的使用
链表实现堆栈(头文件)
这个头文件里面定义了一个栈的头文件,包括入栈、退栈、访问栈底栈顶、输出栈等成员函数
自己用C语言写的简单计算器,用堆栈实现
自己用C语言写的简单计算器,用堆栈实现,欢迎大家指正!
用c++的类模板实现通用堆栈结构
系统的讲述了如何利用类模板去构造数据结构
堆栈类设计
6、 堆栈类设计* 定义Stack类,参照实现: a) 用数组实现先进后出的数据结构 b) 栈顶指针的设置 c) 进栈操作 d) 出栈操作 e) 空栈与栈满溢出判定 f) 完成相应应用程序设计
c++模板堆栈
c++模板堆栈类,你值得拥有。
BugTrap - C++程序崩溃堆栈信息收集
用于C++程序崩溃后,获取崩溃信息并回传等功能。C++企业级程序必备!
堆栈类的实现(C++源代码)
本代码简单的实现了C++堆栈类的实现方式,仅供参考学习
VC++创建堆栈
有利于学习VC++,利用VC++实现堆栈的创建。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 堆栈学习 java的堆栈详细学习