DVWA实验之Brute Force(暴力破解)- Medium
有关DVWA环境搭建的教程请参考:
Brute Force(暴力破解)- Low 实验过程请参考:
Brute Force,即暴力(破解),是指黑客利用密码字典,使用穷举法猜解出用户口令,是现在最为广泛使用的攻击手法之一。
这里我们先将安全等级设为 Medium
开始对暴力破解的中级进行实验
Medium
服务器端核心代码
<?php if(isset($_GET['Login'])){ //Sanitiseusernameinput $user=$_GET['username']; $user=mysql_real_escape_string($user); //Sanitisepasswordinput $pass=$_GET['password']; $pass=mysql_real_escape_string($pass); $pass=md5($pass); //Checkthedatabase $query="SELECT*FROM`users`WHEREuser='$user'ANDpassword='$pass';"; $result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>'); if($result&&mysql_num_rows($result)==1){ //Getusersdetails $avatar=mysql_result($result,0,"avatar"); //Loginsuccessfulecho"<p>Welcometothepasswordprotectedarea{$user}</p>"; echo"<imgsrc="{$avatar}"/>"; } else{ //Loginfailed sleep(2); echo"<pre><br/>Usernameand/orpasswordincorrect.</pre>"; } mysql_close(); } ?>
相比Low级别的代码
知识点:
1.Medium级别的代码主要增加了mysql_real_escape_string函数,这个函数会对字符串中的特殊符号(x00,n,r,,’,”,x1a)进行转义,基本上能够抵御sql注入攻击。
2.MySQL5.5.37以下版本如果设置编码为GBK,能够构造编码绕过mysql_real_escape_string 对单引号的转义。
3.同时,$pass做了MD5校验,杜绝了通过参数password进行sql注入的可能性。
4.没有加入有效的防爆破机制(sleep(2)应该算不上有效的防爆破机制)。
因此Low中的手工注入方法不适用Medium
我们先用bp抓包分析一下
在火狐中开启代理
在bp中配置好
随意输个密码,这里我输入123456
抓取包,发送至intruder
给密码加上$$ , 只选密码为需要爆破的参数
加载字典开始爆破
可以爆破出密码为password
登录成功
完成~