最近项目遇到一次整型溢出攻击 有一个功能,玩家购买num个物品. 每个物品花费14货币. 客户端限制玩家只能购买 1-9999个该物品. 但是某玩家通过技术手段,获得了客户端的运行权限. 于是发送协议购买该物品 306783379 个 于是服务器收到请求进行以下处理 val num = message.getInt("num") //获得客户端发送来的 306783379 val cost = num * produc.price  //这里没有校验物品的数量就直接计算总价了. 所以总…
原文:https://seclists.org/oss-sec/2018/q3/274 摘要 Qualys研究实验室的安全团队发现一个位于Linux内核函数create_elf_tables()中的整型溢出漏洞.在64位系统下,本地攻击者可能利用该漏洞通过SUID-root程序获取root权限. 只有内核commit b6a2fea39318 (mm:可变参数长度,2007),但是没有commit da029c11e6b1(exec:限制arg stack最多使用 75% 的 _STK_LIM,…
整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视.整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件.在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码. 什么是整型溢出 C语言的整型问题相信大家并不陌生了.对于整型溢出,分为无符号整型溢出和有符号整型溢出. 对于unsigned整型溢出,C的规范是有定义的——“溢出…
操作系统   Ubuntu 16.04 /32 位 调试器     IDA pro 7.0 漏洞软件   binutils-2.29.1 0x00: 漏洞描述 1.什么是整数溢出: 在计算机中,整数分为无符号整数以及有符号整数两种.其中有符号整数会在最高位用0表示正数,用1表示负数,而无符号整数则没有这种限制.另外,我们常见的整数类型有8位(单字节字符.布尔类型).16位(短整型).32位(长整型)等.关于整数溢出,其实它与其它类型的溢出一样,都是将数据放入了比它本身小的存储空间中,从而出现了溢…
溢出检测 我们可以通过下面的方式来检测溢出: if(a > INT_MAX - b) {     printf("overflow\n"); } 我们利用整型的最大值减去其中一个数,然后与另一个数进行比较.其中INT_MAX定义在limit.h头文件中,它表示整数的最大值. 当然,我们还可以通过下面的方式来检测: if((unsigned int)a + (unsigned int)b > INT_MAX) {     printf("overflow\n&quo…
返回数据中的dateline全部用date()函数转换后再返回,是要嵌套循环还是遍历,代码怎么写? //查询我的活动 function user_activity_info_by_uid($uid){ $arr = $this->db->query("SELECT * FROM `ultrax`.pre_forum_activityapply WHERE uid='$uid'"); while($result = mysql_fetch_assoc($arr)){ //$d…
我是风筝,公众号「古时的风筝」,专注于 Java技术 及周边生态. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 本来是一个平静而美好的下午,其他部门的同事要一份数据报表临时汇报使用,因为系统目前没有这个维度的功能,所以需要写个SQL马上出一下,一个同事接到这个任务,于是开始在测试环境拼装这条 SQL,刚过了几分钟,同事已经自信的写好了这条SQL,于是拿给DBA,到线上跑一下,用客户端工具导出Excel 就好了,毕竟是临时方案嘛. 就在SQ…
可空值类型 备注     一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值. 默认情况下,所有都引用类型,如String,是否可以为 null,但所有值类型,如Int32,不是. 在 C# 和 Visual Basic 中,你可以将值类型作为可以为 null 标记使用?后的值类型的表示法. 例如,int?在 C# 或Integer?在 Visual Basic 中声明可以分配的整数值类型null. Nullable<T>结构支持使用值类型…
例子:(报错了) public DateTime? time { get; set; } time = item.HospOutDate.HasValue ? DateTime.Parse(item.HospOutDate.Value.ToString("yyyy-MM-dd HH:mm:ss")) : null; 错误提示:无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法: 添加: DateTime? TimeN…
object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: String) { println("Hello, " + name) } val sayHelloFunc = sayHello _ sayHelloFunc("leo") //Scala定义匿名函数的语法规则: (参数名: 参数类型) => 函数体 val say…