思路

假设会员1年2000元,不同与以往的修改金额实现1元买会员,而是在购买会员时,先买合法的年数,例如1年,抓包,将购买的会员年限修改为很大的一个数,例如999999999999年,相应的金额999999999999*2000元。最终要付的钱数就会超出数据类型的最大值,造成数据溢出。放行数据包,会员钱数就会变为1元,年数依然为999999999999年,正常付款,购买成功。

开始

吐槽一句…真Tmd贵

打开Burpsuite 代理进行抓包 点击支付

默认为一年 先修改为10个9试试 提交数据包

发现金额正常为999000*10个9 那么我们再加大为N个9试试(我也不知道我按了多少个9…)

最后提交数据包 发现提示“服务器错误”,此时应付款变为了 inf.NF,这是什么原理呢?

根据猜测,做过开发的都知道,数据超过了该数据类型的最大值,最终数据也就变成了最小的一个数字。至于这里为什么变成了一些字母,我也是百思不得解。

点击提交订单

直接支付完成

仅供本地测试请勿在生产环境测试,否则后果与博主无关。