缓冲溢出代码缝分析!!

问题描述

缓冲溢出代码缝分析!!

#include
#include
#include
#include

const char card[] = "IDB_CARD_";

const char *card_4[] = { "SWORD_", "WAND_", "PENT_", "CUP_" };

const char *card_royal[] = { "KING", "KNAVE", "QUEEN", "KNIGHT" };

char *point_to_card[78] = { NULL };

int sort[78] = { 0 };//the card's sorting

int main()//this is a model to get name in dll ,it's ok
{
char current_name[20] = "0", num[2] = "0";
int count = 0, big_count = 0, card_count = 0;

int i;
strcpy(current_name, card);
for (big_count = 1; big_count <= 5; big_count++)
{
    if (big_count == 1)
    {
        for (count = 0; count <= 21; count++)
        {
            itoa(count, num, 10);
            strcat(current_name, num);
            point_to_card[card_count] = (char*)malloc(sizeof(char)*strlen(current_name));
            strcpy(point_to_card[card_count], current_name);
            strcpy(current_name, card);
            card_count++;
        }
    }
    else{
        for (count = 1; count <= 14; count++)
        {
            if (count <= 10)
            {
                strcat(current_name, card_4[big_count - 2]);
                itoa(count, num, 10);
                strcat(current_name, num);
                point_to_card[card_count] = (char*)malloc(sizeof(char)*strlen(current_name));
                strcpy(point_to_card[card_count], current_name);
                strcpy(current_name, card);
                card_count++;
            }

            else
            {
                strcat(current_name, card_4[big_count - 2]);
                strcat(current_name, card_royal[count - 11]);
                point_to_card[card_count] = (char*)malloc(sizeof(char)*strlen(current_name));
                strcpy(point_to_card[card_count], current_name);
                strcpy(current_name, card);
                card_count++;
            }
        }
    }
}

}
调试时会出现

解决方案

num[2] 大小不够。
内容("0"~"21")最多2个字符,字符串结束符 在哪里?
不就溢出了!

解决方案二:

现代C++编译器和RT都会有缓冲区溢出防范机制的。除非你在编译的时候把这些安全选项都关闭。具体看下手册。

时间: 2024-09-09 19:02:43

缓冲溢出代码缝分析!!的相关文章

GnuTLS 发现缓冲溢出漏洞,补丁已释出

OpenSSL替代加密库GnuTLS发现了一个缓冲溢出漏洞,可被利用执行任意代码.漏洞出 在ServerHello信息中会话ID的长度检查不正确.一个恶意配置的服务器在与设备建立HTTPS加密连接时,可通过发送超过会话ID值长度的畸形 数据触发缓冲溢出.如果设备使用的GnuTLS版本没有打上补丁,设备能被攻击者远程劫持.GnuTLS被许多流行Linux发行版和软件所使用,开发者 已在上月底发布了新版3.1.25.3.2.15和3.3.4,修复漏洞,多数发行版应该已经打上了补丁.

php防止sql注入漏洞代码和分析

 这篇文章主要介绍了php防止sql注入漏洞代码和分析,最近提供了几种常见攻击的正则表达式,大家参考使用吧 注入漏洞代码和分析 代码如下: <?php  function customError($errno, $errstr, $errfile, $errline)  {      echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />";   

电脑中无法打开网页并提示堆栈溢出的原因分析及解决方法

  电脑中无法打开网页并提示堆栈溢出的原因分析及解决方法 1.函数调用层次过深,每调用一次,函数的参数.局部变量等信息就压一次栈; 2.局部静态变量体积太大. 解决方法: 1.按win+r打开运行,输入cmd,并按回车; 2.打开命令提示符后,分别输入并执行以下命令: regsvr32 atl.dll regsvr32 shdocvw.dll regsvr32 urlmon.dll regsvr32 browseui.dll regsvr32 oleaut32.dll regsvr32 shel

weblogic oom分析-weblogic内存溢出outofmemory日志分析

问题描述 weblogic内存溢出outofmemory日志分析 软件环境: aix 6.1+weblogic10.3+oracle11系统每天同时在线人数100左右,数据库的数据量有多张频繁操作的表数据记录在千万以上,主要后台自动处理线程过多.系统前段时间运行一直正常,只是从7月底出现OOM最近差不多半个月出现一次.对weblogic产生的phd文件和javacore文件分析的不太清楚...以下是javacore的日志: WARNING Java heap is almost exhauste

编程-pwm代码求分析,求详细的注释!

问题描述 pwm代码求分析,求详细的注释! 下面这些代码我大概知道是干什么的,但是不知道是怎么实现的,每一步是什么意思,求详细的注释!!!跪求大神们!!!! PWM编程改变输出频率: rTFG0=0xff; rTCFG1=0x1; for(freq=4000;freq<14000;freq=freq+1000) { div=(PCLK/256/4)/freq; rTCON=0x0; rTCNTB0=div; rTCMPB=(2*div)/3; rTCON=0xa; rTCON=0x9; for(

RTC基本的缺陷和代码质量分析功能扩展

本文将深入介绍使用 RTC 提供的 Work Item API 实现灵活.全面.便捷的自定义缺陷分析功能,降低项目管理的复杂度,节约项目管理的人力成本,提供更丰富的项目管理参考数据,从而提高项目管理的精确度. RTC(Rational Team Concert)提供了软件生命周期各个阶段所需要的管理功能,而且为软件工程师提供了可以进行功能扩展开发的软件开发包.本文将介绍如何使用 RTC Plain Java API,基于 RTC 中的项目缺陷信息,统计出相关代码质量数据. 所有正在使用 RTC

.NET Visual Studio 代码性能分析工具_实用技巧

下面通过图文并茂的方式给大家介绍下,具体内容如下: 软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和性能测试,从而大大简化程序员进行代码性能优化的过程.MSDN杂志2011年7月份曾发布主题为".NET代码分析工具和技术"的那一期,让广大程序员收获颇丰.四年过去之后,这些工具又进一步做出了很多改进,同时也出现了更多的选择.本文对当前主流

JAVA程序内存溢出问题原因分析_java

本文较为详细的分析了JAVA程序内存溢出问题原因.分享给大家供大家参考.具体如下: 遇到一个线上系统报 java.lang.OutOfMemoryError: PermGen space 错误,需要定位一下问题.很久之前到时弄过这个,现在还真有点不记得了,但这个真的是一个非常有意思的问题,值得好好研究一下.首先第一反应当然是加上-XX:+PrintGCDetails参数来看具体的GC日志,但是由于程序是tomcat启动的,担心里面封装的东西太多不好定位,既然在windows下面,所以还是借助可视

C#词法分析器(二)输入缓冲和代码定位

一.输入缓冲 在介绍如何进行词法分析之前,先来说说一个不怎么被提及的问题--怎么从源文件中读取字符流.为什么这个问题这么重要呢?是因为在词法分析中,对字符流是有要求的,它必须能够支持回退操作(就是将多个字符放回到流中,以后会再次被读取). 先来解释下为什么需要支持回退操作,举个简单的例子来说,现在要对两个模式进行匹配: 图 1 流的回退过程 上面是一个简单的匹配过程,仅为了展示回退过程,在后面实现 DFA 模拟器时会详细解释是如何匹配词素的. 现在来看看 C# 中与输入相关的类,有 Stream