参考资料:
https://mp.weixin.qq.com/s/VpQtjuuLVNi6v9WxlSg5gg
https://mp.weixin.qq.com/s/c2qZOoQpXOf3AoQD4PuvxQ
1.优惠卷场景支付
很多支付场景都会有优惠券
优惠券特点:
- 满多少减多少
- 有期限,比如当天24点过期
- 无门槛优惠券
- 优惠券叠加
- 全场通用券和特定品种券
- 优惠券领取方式,主动领取/自动发放/签到/完成任务领取…
- 优惠券是否可转赠等等
从这些特点来分析当前系统领取优惠券可能存在什么问题
1.1.优惠券领取
1.并发领取优惠券,使用优惠券并发下单(看其它订单是否也使用了优惠券)。
2.使用优惠券并发取消下单:为什么要并发取消(可能会返还多张优惠卷)。
3.业务回退:当优惠卷不能遍历并发的时候 尝试领取后浏览器返回上一级若能重新领取 则有漏洞。
4.可能领取优惠券时是根据id进行领取,遍历ID看是否存在其它优惠券
1.2.优惠券期限
1.仅限于限时优惠卷,比如6月18过期,当你把本地时间修改为6月18之前,又可以使用了
2.先下单看数据包中是否存在优惠券ID字段,记录ID字段,当优惠券过期后,下单带上这个ID字段,看是否能成功下单带上过期优惠券
1.3.优惠券混用
比如当前场景只能使用一张优惠券或满减券,将你的优惠卷ID记录下来,下单时抓包带上其它优惠券看是否能成功下单
1.4.越权使用他人优惠券
注册两个账号,一个账号有优惠卷,一个账号不存在优惠券
有优惠券账号抓取购买商品时的数据包,但不支付
没有优惠卷账号也抓取购买商品时数据包,将优惠券字段替换给自己的数据包,看是否能成功购买
1.5.同一张优惠券重复使用
使用优惠券支付到付款界面,先别支付,添加到购物车。再次购买商品,看是否能使用该优惠券,能使用就到付款界面
2.支付场景
2.1.四舍五入半价购
比如数量:买1份更改为0.5份,int类型中,0.5份会进一
TIPS:除了购买处可以四舍五入外,其它充值/提现处也可以尝试四舍五入
2.2.直接修改金额低价购或零元购
|
|
2.3.修改币种实现低价购
|
|
2.4.负数购买或正负叠加购买
|
|
2.5.最大值溢出—不仅限于支付场景
漏洞成因:int32最大值为4294967296,充值98998996172801,支付溢出
案例:某SRC最大值溢出
兑换功能点存在最大值溢出

将alterAmount数值设置为2147483647,重放数据包达到无限刷健康豆,并且健康豆可正常使用


![]()
3.签约漏洞
比如冲会员,新用户99冲一年会员,普通用户139一年,你微信扫码,先别支付,另一个手机再次扫码,一起支付,看是否能99+99冲两年
……