支付逻辑常见测试
熟悉常见支付流程
选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
熟悉那些数据篡改
商品ID,购买价格,购买数量,订单属性,折扣属性,支付方式,支付状态等
熟悉那些修改方式
替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
熟悉那些另类方法
无限试用,越权支付,并发兑换,四舍五入半价购,循环优惠券,支付签约逻辑等
羊毛省钱促销机制
新老用户差异,积分兑换制度,邀请分享绕过机制,红包渠道等
演示案例
数量和价格的篡改
最直接:数量和价格的篡改



原理:常理应该是从数据库中查询商品价格才进行订单生成,这里却以提交的数据包为准
当然,也可修改数量为0,0.001,-1
订单对冲
替换订单的属性值 — 低价购买高价
当修改价格和数量不起作用时,可以考虑替换部分请求参数
同时抓包5400元的大米手机cms和6000元大米测试产品的购买数据包,记录下参数值

将大米测试产品(贵)的请求参数(除数量和价格)替换到大米手机cms(便宜)的购买请求参数上

其他思路
如果可以搭建一个网站,源码一样,并且支付方式也是相同的(调用支付程序api相同),就可以像oauth的替换数据包那样的操作,造成支付到自己的网站上,并且返回支付成功的数据包,让目标网站以为支付成功了


优惠券


当使用了优惠券,达到上限后,可以尝试修改相关参数值,再次使用优惠券
- 优惠券复用:重复使用优惠券参数值
- 优惠券领取:猜猜优惠券参数相关逻辑,猜测规律,推算参数值
积分兑换

库存溢出
程序以库存为主计算价格


四舍五入
充值0.019,0.001
提现0.019,0.001等
支付逻辑如何挖掘:
找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠等)
要尝试对数据包中的各个参数进行分析。
不按套路出牌
多去想想开发者没有想到的地方,如算法拼接,关闭开启返优惠券等
PC端尝试过,APP端也看看,小程序也试试
支付逻辑安全修复
- 在后端检查订单的每一个值,包括支付状态;
- 校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ;
- 与第三方支付平台检查,实际支付的金额是否与订单金额一致;
- 如给用户退款,要使用原路、原订单退回。如:退押金,按用户原支付订单原路退回;
- 加密、解密、数字签名及验证,这个可以有效避免数据修改,重放攻击中的各种问题;
- 金额超过指定值,进行人工审核等。
本节知识点
WEB攻防-购买支付-修改数量&篡改价格&订单对冲
WEB攻防-购买支付-优惠券规律&积分对冲&库存溢出
WEB攻防-购买支付-四舍五入&签约并发&新老用户等
