文章总结: 文档分析了支付系统中整数溢出漏洞导致的0元购安全风险,通过Java和JS整型范围演示溢出原理,在玄域靶场中展示如何组合修改商品单价和优惠券金额触发漏洞。关键发现是当修改后的总金额超过整型最大值时会发生溢出变成负值,从而绕过支付验证。提供了具体的数据包修改方法实现漏洞利用,强调需在合法靶场环境中测试。 综合评分: 85 文章分类: 漏洞分析,WEB安全,渗透测试,安全工具,实战经验
【支付漏洞】金额溢出导致的0元购-网络安全
原创
無名 無名
无名的安全小屋
2026年4月8日 18:33 四川
玄域Web/App靶场学习平台
01
免责声明
本次所有操作均在玄域靶场内进行,大家在生活中也务必严格遵守《网络安全法》!
玄域靶场:www.shangsec.com
目前,平台已建成web渗透靶场、安卓App渗透靶场、苹果App渗透靶场、实战漏洞报告板块、面试刷题板块、网安学习板块等等。
除CTF系列关卡环境外,其余所有靶场环境均改编自企业真实漏洞案例!
02
前置知识
在实际开发中,因为这个业务功能点可能只需要整数,那么开发人员可能就会通过一个整数类型的变量去存储我们的值。
而对于后端开发中最常用的Java也好,还是 Node.js 也好,它们的整型大小都是有范围的。
对于Java来讲int类型的最大值为2147483647,而对于JS来讲,它的最大值是 9007199254740991
下面是代码演示
publicclassMain { publicstaticvoidmain(String[] args){ int maxValue = 2147483647; int overflowValue = maxValue*2; System.out.println(overflowValue); }}
可以看到,最后的输出结果确是-2
通过上面的代码演示,我们可以知道存在整数溢出这么一个知识点。
但是,它是负数,一般情况下,特别是在这个支付业务中,当你的总金额为负数时,后端肯定会异常处理的,你也是没办法0元或者低价购买这个商品的。
经过进一步尝试,可以发现,目标的单价金额只能修改为比原金额大的一个数。
而优惠券金额只能修改为比原金额小的一个数,甚至是负数,这个逻辑乍一看好像没有任何问题。
毕竟你把单价修改贵了,把优惠券金额修改小了,你付款的时候反而比正常买要更贵了。
这对于厂商来讲是好事,这肯定不是我们想要的一个结果,那么我们怎样结合整数溢出来进行组合利用呢。
03
实操演示
玄域靶场支付漏洞-08环境
来到玄域靶场-支付漏洞08环境,选择优惠券后,点击购买后,进行数据包的拦截。
修改数据包如下即可,这样我们就可以结合整数溢出来达到我们想要的一个结果。
然后放行数据包
04
学习交流qun
工具包、资料
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:无名的安全小屋 無名 無名《【支付漏洞】金额溢出导致的0元购-网络安全》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。





![[工具推荐]BurpSuite多漏洞自动化探测插件xia_tan(瞎探)](/images/random/titlepic/2.jpg)





评论