目录
思维导图
购买修改方式
1.替换支付:3000的支付金额与6000的支付金额尝试用3000的去购买6000的
2.重复支付:支付成功了再次购买能否成功
3.最小额支付:用最小的金额去购买
4.负数支付:同上
5.溢出支付:1000的东西,用90亿的去支付,看网站如何支付
6.优惠卷支付:重复使用优惠卷
案例一:修改数量和价格
大米cms
购买的时候抓包
修改购买数量
价格变为负数
修改价格
价格更改
案例二:低价购买高价产品
首先先购买一个低价产品5400,抓包,记录get请求
再购买一个高价产品6000元的,抓包,记录get请求
把5400里面get请求,除了价格和数量,其余改为6000的然后放包
利用5400购买了6000的产品
案例三:更改支付接口
无法复现:原因只有一些公司和商铺才可以申请,为了预防诈骗
点击支付宝在线进行抓包
攻击原理:支付宝的api接口改为自己的,相当于自己给自己付款
限制和防御:只接收自己规定好的域名,接口
案例四:无限优惠券
两种利用方式:
1.只能领取一次,(多注册几个账号尝试)
2.优惠卷重复使用
先领取两张优惠券
购买的时候使用优惠券,提交抓包
记录信息
购买两次 第一次use_coupon=1 第二次=2
无优惠券购买一次
会发现use_coupon的值会发生变化,有优惠卷每买一次会增加
首先尝试能否优惠卷重用
抓包修改为一样的值,此时无优惠券
可以重用
然后尝试利用逐渐增加的逻辑,让use_coupon=3
可以利用
如何绕过?
1. 把这些优惠券写入数据库当中,每使用一次,就删除一个
2. 把优惠卷后面的数字改为不能人为识别的编码格式
案例五:订单编号逻辑
两个订单,一个价格为1000,另一个价格为9000
点击去支付抓这两个包,查看订单编号
9000的订单编号
1000的订单编号
然后再次点击购买的时候把9000的订单号改为1000的
这个时候9000价格的订单已经变为1000快的了
如何去避免这种操作?
抓包时候会发现有id号,如果将id号与订单编号进行一个绑定的话,进行一个检测,就能避免这种攻击
如果不对应的话,弹出订单信息有误。
代码层面&安全修复
价格以数据库为准
大米cms中价格,post或者request提交可以修改
在niushop当中,价格从数据库中取出,无法修改金额,只能修改数量
购买数量
限制只能为正整数,不能为负数,小数,0
niushop
优惠券
把这些优惠券写入数据库当中,每使用一次,就删除一个