DVWA——暴力破解

原理

概述:

穷举法是一种针对于密码的破译方法。这种方法很像数学上的“完全归纳法”并在密码破译方面得到了广泛的应用。简单来说就是将密码进行逐个推算直到找出真正的密码为止。比如一个四位并且全部由数字组成其密码共有10000种组合,也就是说最多我们会尝试9999次才能找到真正的密码。利用这种方法我们可以运用计算机来进行逐个推算,也就是说用我们破解任何一个密码也都只是一个时间问题。

当然如果破译一个有8位而且有可能拥有大小写字母、数字、以及符号的密码用普通的家用电脑可能会用掉几个月甚至更多的时间去计算,其组合方法可能有几千万亿种组合。这样长的时间显然是不能接受的。其解决办法就是运用字典,所谓“字典”就是给密码锁定某个范围,比如英文单词以及生日的数字组合等,所有的英文单词不过10万个左右这样可以大大缩小密码范围,很大程度上缩短了破译时间。

在一些领域,为了提高密码的破译效率而专门为其制造的超级计算机也不在少数,例如IBM为美国军方制造的“飓风”就是很有代表性的一个。

一般出现在密码破解里,也就是一个一个带进去试。比如我要破解你的密码,我完全不知道,但是密码无非是由那些字符组成的,数字、大写字母、小写字母,当然有些变态的会有一些符号,但是我依然可以一个一个试,比如先从1位开始试,输入1,不对,那就2,还不对,那就3……这样一个一个试下去,试完一位的试2位、3位……一直到对了为止,当然这不可能由人完成,而是用一些暴力破解的软件来完成,现在计算机的计算速度越来越快了,所以暴力破解的可行性越来越大(虽然说这种办法最没有技术含量)。

不过很多网站的密码是不能这样破解的(比如邮箱、网络社区的帐号等),因为服务器会记录你尝试连接的次数,如果发现你不断连接不断密码错误,那服务器就会禁止你的连接了,现在很多网站的服务器都有这样的功能。

初级密码暴力破解

打开dvwa,选择low级别

修改浏览器的代理

在打开Burpsuite

然后到浏览器访问的DVWA网址中打开Brute Force模块,输入用户名密码为admin\admin,这个时候再点击Burp的Proxy选项下的Intercept is off使Burp开始拦截数据包,点击Login(注意:这时Burpsuite的interception选项要保持intercept is on状态),回到Burpsuite点击Proxy发现刚刚的数据包被拦截了,按快捷键ctrl i(把拦截到的数据包发送到Intruder模块),点击Intruder点击Positions点击Clear(清除自动选中的标记)选中password=后面的admin选中这个admin再点击Add(选中我们需要爆破的位置);

点击Payloads然后在输入框内输入密码然后点击add来添加自己的字典(也可以上传字典文件),这里为了演示输入的时候一定要输入password;

点击Start attack(有的版本start attack位置在右边);

点击Length如果爆破成功有一个长度不同的,这个就是密码。(因为登录成功之后返回的数据包内容和长度都不一样)

初级用户名密码暴力破解

浏览器访问的DVWA网址中打开Brute Force模块,输入用户名密码为admin\admin,这个时候再点击Burp的Proxy选项下的Intercept is off使Burp开始拦截数据包,点击Login(注意:这时Burpsuite的interception选项要保持intercept is on状态)。

回到Burpsuite点击Proxy发现刚刚的数据包被拦截了,按快捷键ctrl i(把拦截到的数据包发送到Intruder模块),点击Intruder点击Positions点击Clear(清除自动选中的标记)。然后选中username=和password=后面的admin,分别选中这个admin再点击Add。(这里是为了添加需要爆破的位置)(注意这里的Attack Type 是Cluster bomb) ;

点击Payloads添加自己的字典,这里需要设置两个payload:把payload set设置为1的时候在输入框内输入字典并点击add,然后将payload set切换到2,再在输入框内输入字典点击add。

这里为了演示成功,输入的时候一定要输入password和admin,;

点击Start attack

点击Length如果爆破成功有一个长度不同的,这个就是密码。(因为登录成功之后返回的数据包内容和长度都不一样)

中级密码暴力破解

打开DVWA,选择Medium,同时设置代理(这里就不用图片了,步骤和前面一样)

浏览器访问的DVWA网址中打开Brute Force模块,输入用户名密码为admin\admin,这个时候再点击Burp的Proxy选项下的Intercept is off使Burp开始拦截数据包,点击Login(注意:这时Burpsuite的interception选项要保持intercept is on状态),回到Burpsuite点击Proxy发现刚刚的数据包被拦截了,按快捷键ctrl i(把拦截到的数据包发送到Intruder模块),点击Intruder点击Positions点击Clear(清除自动选中的标记)选中password=后面的admin选中这个admin再点击Add(选中我们需要爆破的位置)

点击Payloads然后在输入框内输入密码然后点击add来添加自己的字典(也可以上传字典文件),这里为了演示成功,输入的时候一定要输入password;

点击Start attack;(有的版本start attack位置在右边);

点击Length如果爆破成功有一个长度不同的,这个就是密码。(因为登录成功之后返回的数据包内容和长度都不一样)

中级用户名密码暴力破解

浏览器访问的DVWA网址中打开Brute Force模块,输入用户名密码为admin\admin,这个时候再点击Burp的Proxy选项下的Intercept is off使Burp开始拦截数据包,点击Login(注意:这时Burpsuite的interception选项要保持intercept is on状态),回到Burpsuite点击Proxy发现刚刚的数据包被拦截了,按快捷键ctrl i(把拦截到的数据包发送到Intruder模块),点击Intruder点击Positions点击Clear(清除自动选中的标记)。选中username=和password=后面的admin,再点击Add(选中我们需要爆破的位置);(注意这里的attack type是Cluster bomb);

点击Payloads添加自己的字典,这里需要设置两个payload:把payload set设置为1的时候在输入框内输入字典并点击add,然后将payload set切换到2,再在输入框内输入字典点击add。

这里为了演示成功,输入的时候一定要输入password和admin;

点击Start attack

点击Length如果爆破成功有一个长度不同的,这个就是密码。(因为登录成功之后返回的数据包内容和长度都不一样)

low和meduin的操作相差不大,Medium等级中分别对用户名和密码进行了查询,提高了安全性,主要区别是在登录失败后会执行sleep(2)函数,即程序休眠两秒,这两秒内不能再登录,这延长了我们爆破的时间但并不影响结果

高级密码暴力破解

访问靶机的内网地址,打开登录DVAW,选择high难度

点击Brute Force模块,查看源码

<?php

if( isset( $_GET[ 'Login' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Sanitise username input
    $user = $_GET[ 'username' ];
    $user = stripslashes( $user );
    $user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitise password input
    $pass = $_GET[ 'password' ];
    $pass = stripslashes( $pass );
    $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $pass = md5( $pass );

    // Check database
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    if( $result && mysqli_num_rows( $result ) == 1 ) {
        // Get users details
        $row    = mysqli_fetch_assoc( $result );
        $avatar = $row["avatar"];

        // Login successful
        echo "<p>Welcome to the password protected area {$user}</p>";
        echo "<img src=\"{$avatar}\" />";
    }
    else {
        // Login failed
        sleep( rand( 0, 3 ) );
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

// Generate Anti-CSRF token
generateSessionToken();

?>

分析源码可以看到代码中加入了user_token,每次提交需要将username、password、Login和user_token四个参数一起提交到后台,因此要想解决每次变化的user_token需要每次重新获取,破解难度提升。

那么我们尝试在Burpsuite中暴力破解DVWA高级级别(爆破带有规律性的token验证)。

先打开Burp的Proxy选项下,点击Intercept is on使其切换到off,不然没法访问网页。

回到DVWA的Brute Force模块中,输入admin/admin,然后点击Burp的Proxy选项下的Intercept is off使Burp开始拦截数据包,再点击Login并抓包,回到Burpsuite,发现刚刚的数据包被拦截了。

按快捷键ctrl i,点击Intruder->Positions->Clear;然后添加要爆破的参数:选中password=后面的参数,再点击Add;选中user_token=后面的参数,点击Add;并将Attack type选择为Pitchfork。

在Options中找到Request Engine模块,把Number of threads(线程数)设为1;

在Options中下拉找到Rediections模块,选择always,允许重定向;

在Options中下拉找到Grep-Extract模块,点击Add,并设置筛选条件,得到user_token;

在Payloads中为选择的参数设置字典,在add框中输入即可;

开始爆破,下图可以看到成功爆破出账户密码。

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值