文章总结: 本文介绍了一种通过整数溢出挖掘越权漏洞的新方法。作者在渗透测试商城站点时发现,当常规越权测试无效后,利用int32有符号整数最大值4294967295进行溢出测试,成功获取全站用户数据。文章详细解释了32位有符号整数的溢出原理,并展示了如何将这一技术应用于实际漏洞挖掘。 综合评分: 82 文章分类: WEB安全,渗透测试,漏洞分析,红队,实战经验
越权漏洞挖掘新思路
web安全小白 web安全小白
web安全小白
2026年5月12日 12:19 日本
在小说阅读器读本章
去阅读
梦里的一次渗透测试过程中发现,目标是一个商城站点(如有雷同纯属巧合)
登录后可以看见一些自己的个人信息
翻找数据包,发现存在id值传参,此时此时进行越权测试,id=6修改为7 ,null,0 ,-1,置空均无果,sql注入也不存在
就在一筹莫展时,突然想到了溢出相关的知识的
在主流编程语言(如 Java、C、C++、C#)中,**int** 通常为 32 位有符号整数,取值范围是:
-2,147,483,648 到 2,147,483,647
正数最大:2³¹ − 1 = 2,147,483,647 负数最小:−2³¹ = −2,147,483,648
2,147,483,647 × 2 = 4,294,967,294
转换为十六进制:0xFFFFFFFF 0xFFFFFFFE(实际结果是 0xFFFFFFFE,因为只保留低 32 位)
作为有符号 int:0xFFFFFFFE = -2
解释
- 数学真值:
2,147,483,647 × 2 = 4,294,967,294 - 超出 int 范围(最大值 2,147,483,647)
- 硬件处理:保留低 32 位,即
4,294,967,294 mod 2³² = 4,294,967,294 - 但 int 是有符号的:
4,294,967,294的二进制是11111111 11111111 11111111 11111110 - 有符号解释:最高位是 1 → 负数,按补码转十进制 = -2
4,294,967,294+1 = 4,294,967,295 ——————- -1
尝试通过溢出,进行测试,没想到
将id值修改为4294967295,最终居然通过溢出的方式实现获取全站用户数据
视频讲解:https://www.bilibili.com/video/BV1MN5K6NE9g
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:web安全小白 web安全小白 web安全小白《越权漏洞挖掘新思路》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论