DVWA系列之13 Brute Force代码分析与防御

之前已经分析过了low级别的Brute Force代码,下面再分别分析一下medium和high级别的代码。

medium级别代码:

DVWA系列之13 Brute Force代码分析与防御

很明显就可以看到medium和low级别的区别,在这里对负责接收用户参数的变量$user和$pass进行了过滤,过滤的方法仍然是使用mysql_real_escape_string()函数。这样密码绕过就行不通了,但对于暴力破解却是没有丝毫影响,利用Burpsuite仍然可以很快破解出密码。

下面再看下high级别的代码:

DVWA系列之13 Brute Force代码分析与防御

high级别首先仍是对$user和$pass变量进行了过滤,当然在过滤之前先使用stripslashes()函数清除了魔法引号的转义。再仔细观察一下与medium级别代码的区别,就会发现在if语句的else部分增加了一行代码“sleep(3)”,也就是说如果密码输入错误,那么就需要等待3秒钟才可以继续输入。这个设计很明显是用来防御暴力破解的,在Burpsuite中测试一下就可发现密码破解的时间被大大延长了,这样如果将密码设置的稍微复杂一些,再加上适当的停顿时间,基本上就可以有效地防御暴力破解。

当然,防御暴力破解的最有效方法是在登录页面中加入验证码,虽然有些验证码也是可以被突破的,但如果将验证码也设置的稍微复杂一些,就像最近被吐槽的12306验证码,那么暴力破解基本上就是不可能了。