当攻击应用程序的逻辑缺陷时,渗透测试员既要进行系统性地探查,也要从不同的角度思考问题。如前所述,渗透测试员应该始终执行各种关键检查以确定应用程序在收到反常输入后的行为。这类反常输入包括从请求中删除参数、使用强制浏览不按预定顺序访问功能,以及向应用程序的不同位置提交参数。通常,应用程序响应这些操作的方式会反应出一些存在缺陷的假设,不做这些假设就可以避免造成不良后果。
除了这些基本的测试外,在探查逻辑缺陷时面临的最大挑战,是如何深入了解开发者的思维方式。需要了解他们想要达到什么目的、可能会做出什么假设、可能采用哪些捷径、将会犯下什么错误。想象一下,假设完工的最后期限临近,但还主要担心功能而非安全,试图在现有代码中增加一项新功能,或者需要使用其他人编写的质量不佳的API。在那样的情况下,开发者可能会犯什么错误?如何利用这些错误?