关于整数安全漏洞的一点点小记

本文简要介绍了整数安全漏洞,包括溢出、回绕和截断三种类型。溢出发生在有符号整数相加时可能导致符号位改变;回绕是无符号整数超过其范围后的现象;截断则发生在宽窄整数转换中。重点讨论了整数提升和负数转换为无符号整数导致的数值变化。同时提到了这类漏洞在函数如memcpy()和strncpy()中的利用情况。
摘要由CSDN通过智能技术生成
前言:关于整数安全漏洞的一点点小小的整理。
我自己随便写了,写到那里就是那里吧,东西也是写给我自己看的。

1.为什么会产生整数安全漏洞
整数安全的三种类型:

  • 溢出:有符号数才会产生溢出,当两正和两符相加的时候,会有可能导致溢出,溢出的数据会覆盖掉符号位,从而是两个很大的正数相加变成负数,两个很大的负数相变成正数,溢出标志位of可以检测是否有溢出产生。另外溢出分为上溢出和下溢出。
  • 回绕:回绕是对于无符号整数的,例如对于一个unsigned char(unsigned int_8)的数据,当你赋值给他256的时候,就会回绕变为0,超过了上限,也是超过了8个bit,进位到9bit,导致存储的数据丢了。
  • 截断:截断是把一个比较大宽度数存放在宽度比较小的操作数当中,导致高位发生了截断。

常常产生问题的就有什么呢?就有整数转换,也就是显式和隐式两种把,具体我就不说了,比如你把int类型给char类型。
另外还有的就是整数提升,(这个最早听到概念的话是在《c专家编程》上面),也是一种两个宽度不一样的数据操作的时候,会自动的把宽度小的转换成宽度大的,具体的如何我也不知道云云。

另外还要说一句我一直感觉很有趣的话:

在计算机中的数据,在于你如何解释,你让它是地址,他就是地址,你让他是unsigned就是unsigned,是signed,他就是signed。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值