首页
社区
课程
招聘
[求助]阿里的一道关于二进制的笔试题,可是我二进制不太好,希望大家帮帮忙,写写
发表于: 2017-10-17 13:45 6037

[求助]阿里的一道关于二进制的笔试题,可是我二进制不太好,希望大家帮帮忙,写写

2017-10-17 13:45
6037
以下c代码是否包含安全漏洞,如存在漏洞,请说出漏洞如何触发?
    bool funcA(unsigned int cbSize){
        if (cbSize < 1024) {
        char *buf = new char[cbSize-1];
        memset(buf,0,cbSize-1);
        delete buf;
        return true;
    }
        else
        return false;
    }

我考虑的是不是利用unsigned int 的取值范围,然后让cbSize溢出为一个负数,就绕过了 cbSize<1024的限制

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
无符号int是没有负数的。
2017-10-17 13:52
0
雪    币: 2058
活跃值: (1651)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
cbSize            0  溢出
2017-10-17 14:01
0
雪    币: 114
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
cbSize  =  0;
2017-10-17 14:02
0
雪    币: 283
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
实参为0的时候会崩溃算吗
2017-10-17 14:03
0
雪    币: 1790
活跃值: (3786)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
是不是  char  *buf  =  new  char[cbSize-1];  没有做容错处理啊。如果cbSize过大
导致内存分配失败,memset(buf,0,cbSize-1);会发生异常或者把正常数据擦成0.
2017-10-17 14:15
0
雪    币: 334
活跃值: (934)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
1.没有判断new是否成功,
2.cbsize=0
3.还有一个,还没验证
2017-10-17 14:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢大家
2017-10-17 14:28
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
拍拖 是不是 char *buf = new char[cbSize-1]; 没有做容错处理啊。如果cbSize过大 导致内存分配失败,memset(buf,0,cbSize-1);会发生异常或者把正常数 ...
他这里进行了<1024的判断,所以不能分配一个过大的值的。嘿嘿
2017-10-17 14:59
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
cangqing 他这里进行了
cbsize=0
再  cbSize-1,无符号的-1就是2^32,大大超过了1024
2017-10-17 15:09
0
雪    币: 312
活跃值: (123)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
cangqing 他这里进行了
  0-1      了。    为啥不会分配过大的值
2017-10-17 15:12
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
奥,知道了,嘿嘿,这个题是今天看到的一个开源项目里下载的,我把链接给大家,大家有兴趣也可以看看https://github.com/SecYouth/sec-jobs
2017-10-17 16:13
0
雪    币: 27
活跃值: (622)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
整数溢出吧。。
2017-10-20 18:21
0
游客
登录 | 注册 方可回帖
返回
//