签约漏洞一般出现在==支付优惠界面==,比如首月支付1元,次月是8元这种,当然还有其他拓展,需要多创新思考,例如==余额补差==.
下面以首月优惠为例:

像很多支付开通连续包月,都会有首月优惠,以下为支付时的逻辑:
正常逻辑:
- 第一次优惠支付

- 客户端发送支付请求给服务端
- 服务端返回支付订单
- 客户端根据订单在微信或者支付宝进行支付
- 支付成功后服务端会校验是否支付成功,成功则会员到账,并且应该会将该用户标志为已经享受优惠
- 第二次正常支付

前面大概和第一次一样,只是在客户端返回支付订单时
会校验用户是否有优惠资格,没有,就按照正常价格支付
漏洞逻辑:
漏洞的思路是使用第一次生成的多个订单,绕过对用户的校验
- 在第一次有优惠资格时,多次扫码,创建==多个订单==(微信,支付宝)但是不支付
解释:因为创建订单时,因为没有支付.我们都是有优惠资格的,所以这些订单的价格是优惠后的 - 依次支付订单,发现可以续费多个月
- 原理
优惠校验是对用户生成订单的过程进行校验的,我们在用户具有优惠资格时生成多个订单,保持不支付,从而绕过了校验
签约漏洞进阶
不只在这些优惠界面存在该漏洞,在其他功能页面也存在,要多了解业务功能,结合思路
例如:支付补差
普通会员10元 超级会员20元
正常逻辑
购买一个月普通会员需要支付10元,如果之后需要超级会员,需要补齐差价,支付10元,就可以获得超级会员
漏洞利用逻辑
创建多个补差价的订单,再进行支付-----造成10元购买超级会员的漏洞
原理:
由于服务端处理逻辑不是在订单上进行校验,而是在生成订单上进行校验,由于订单在之前就生成了,所以就绕过了校验