记一次有趣的支付漏洞挖掘


前言

最近漏洞挖掘过程中遇到一个有趣的支付漏洞,开发者已经修复,这里记录一下挖掘过程。

支付逻辑分析

产品界面

抓包分析:

主要几个参数:

  • appname:购买产品名字
  • fee:支付金额,实际的支付金额是这个数除以100,所以这里是支付15元。
  • method:支付方法:微信or支付包
  • username:用户名。

从上面可以看出来真正可以让用户操作产生漏洞也就自由fee这个参数。经过一番测试基本可以滤清里面的支付逻辑:

如果金额是1500,4500,14400就按照产品界面支付,也就是15块可以使用一个月。而如果不是这些金额的话就按照10块一天来支付比如你修改fee值为2000,你付了20快钱只能获取到2天的产品体验,低于10块为0天。数值为负数,添加了小数点,数值过大都不会放回付款码。咋一看这逻辑简直无敌,你改了别人的金额反而自已更亏了,但真的是无懈可击吗?

小数处理问题

经过笔者测试,当你使用14.5进行支付的时候获取到15块钱购买一个月的产品体验效果。因为后台代码会自动把金额除以100,本人猜测后端把金额的小数后面进行了四舍五入的处理,才导致了使用14.5达到15块的效果。但是你看到这里肯定会问这只是省下了5毛钱可太鸡肋了。那我就只能说看购买什么产品了,如果是价格便宜并且量大的产品这个危害就截然不同了。例如笔者在该网站下找到的另一个购买点。

五毛钱购买一次根据上面的逻辑这里我只需要把fee值修改25,后端除100就是0.25元,就可以实现减少一半的钱购买了。

这里我们只需要批量的刷100次最后的钱就是25元,比它打折后39元还要便宜不少。

后言

向开发者报告了漏洞写了一大堆最后对方只给我发了一个句已修复就没有后文了,连句感谢都没有,估计对方认为我不是什么好人~~


文章作者: EASY
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
PHP中双引号的安全问题 PHP中双引号的安全问题
前言在PHP语言中,单引号和双引号都可以表示一个字符串,但是对于双引号来说,可能会对引号内的内容进行二次解释,这就可能会出现安全问题。 双引号引起的命令执行漏洞在双引号中倘若有${}出现,那么{}内的内容将被当做代码块来执行。例如以下代码可
2020-11-15 EASY
下一篇 
代码审计-yzmcms 代码审计-yzmcms
前言这次审计的CMS是最新版的YzmCMS,该CMS采用MVC架构整体上安全做的非常不错几乎没有审计出来什么危害性比较大的洞, 本文记录一下审计的过程。 审计思路分享一下本人MVC架构的代码审计思路: 1.确定路由走向,了解网站的基本架构
2020-11-08 EASY
  目录