逻辑漏洞之支付逻辑漏洞
产生原因:开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修
改成任意即可。
练习地址:http://120.27.61.239:8080/vulnlab/logic/damicms/index.php
修改购买数量
随便找一个商品,点击购买,抓个包看看。
可以看到,数据包里面包含了商品数量、价格、id等等信息。
如果将qyt改为100是否就是用6000买100个这样的商品呢。这里试一试。
可以看到,这里修改了商品数量100之后,订单总价没有出错。那如果将数量改为0.1,总价会不会就会变成600呢。
可以看到,总价会变成600。这就可能会提交订单后,由于商家是自动发货,会直接发了一个完整的商品过来,而用的只是600。数量改为0.01或者0.001等等都有可能。再思考一个方向,假设我们将购买数量改为负数的话,会不会给我们的账户反加钱。。。
可以看到,订单总价变成-18000,提交订单后,发现账户里的钱反倒加了18000
修改购买价格
可以看到,和修改购买数量是一样的效果。与上面一样,不过多阐述。
修改支付对应商品
先抓一个“大米CMS手机开发专版”购买包,发现有一个id=69.
再抓一个大米测试产品,id=127。
将购买大米cms手机开发专版提交的数据包中的id改成127,看看结果如何。
结果还是没变。再看看,id后面还有一个name,将name也换成是大米测试产品的name,看看结果如何。
&id=127&name=%E5%A4%A7%E7%B1%B3%E6%B5%8B%E8%AF%95%E4%BA%A7%E5%93%81
这就存在用低价格的商品的价格购买高价格商品的可能性。