渗透测试步骤

尝试规避交易限制的第一步是了解受控制的相关输入接受哪些字符。

(1)尝试输入负值,看应用程序是否接受这些值并按预想的方式对它们进行处理。

(2)可能需要执行几步操作,改变应用程序的状态,使其对攻击有用。例如,可能需要在账户之间进行几次转账,直到得到可提取的适当余额。

11.2.7 例7:获得大幅折扣

我们在一家软件供应商的零售应用程序中遇到过这种逻辑缺陷。

1.功能

应用程序允许用户订购软件产品,如果购买的商品达到一定数量,就有资格获得大幅折扣。例如,如果用户分别购买了一款防病毒解决方案、个人防火墙与防垃圾邮件软件,他就可以获得25%的折扣。

2.假设

当用户在购物车中增加一件商品时,应用程序就使用各种规则决定他选择购买的产品是否让他有资格获得任何折扣。如果用户可以获得折扣,应用程序就根据折扣率调整购物车中的商品价格。开发者认为用户只有购买捆绑销售的商品,才能获得折扣。

3.攻击方法

开发者的假设存在相当明显的缺陷,因为该假设忽略了一个事实,即用户向购物车中添加商品后可能会再将其从中移走。狡猾的用户可能会往购物车中添加供应商出售的大量产品,以获得最大可能的折扣。当购物车中的商品可以采用折扣时,他就会把不需要的商品从中取走,而购物车中剩下的商品仍然可以享受原来的折扣。