DVWA靶场&Brute Force 暴力破解&审计通关教程

在这里插入图片描述

如果你想搭建靶场可以购买蓝易云服务器搭建

🤪🤪🤪🤪🤪🤪点击查看-蓝易云服务器

LOW

Brute Force 暴力破解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nT2yWBR7-1660110738463)(D:\小迪2022\2022\PHP代码审计DVWA\PHP代码审计DVWA.assets\image-20220808152019550.png)]

首先暴力破解的话,有破坏加密的,有破解其他类的账户类型等等的,那么这里是破解账户密码

那么暴力破解的概念也非常的好理解就是单纯的对账户和密码上的尝试破解,用到的就是用不同的账户和密码去进行登录看看那个能登录成功

代码分析

<?php
//if判断
    //这里用到了isset函数,这个函数用于检测的是返回值是否为空,就是用于检测变量是否已设置并且非 NULL
if( isset( $_GET[ 'Login' ] ) ) {
    // Get username
    //这里就是设置了一个user变量作用是获取用户输入的用户名称
    $user = $_GET[ 'username' ];

    // Get password
    #这里就是设置了一个pass变量作用是获取用户输入的密码
    $pass = $_GET[ 'password' ];
    //这里设置的密码验证,将用户输入的密码进行MD5加密【用于与数据库进行校验,数据库的密码信息是md5的】
    $pass = md5( $pass );

    // Check the database
    //设了一个MySQL的查询语句查询的是在user表查询条件user是不是等于来自变量user的值,password是不是用户输入的密码
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND passwor d = '$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判断
    if( $result && mysqli_num_rows( $result ) == 1 ) {
        // Get users details【获取用户详细信息】
        $row    = mysqli_fetch_assoc( $result );
        $avatar = $row["avatar"];

        // Login successful
        //登录成功就进去
        //提示Welcome to the password protected area 正常用户名称
        echo "<p>Welcome to the password protected area {$user}</p>";
        //输出一个照片
        echo "<img src=\"{$avatar}\" />";
    }
    else {
        // Login failed
        //登录失败就提示Username and/or password incorrect.
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

    //账户密码验证完关闭与数据库的连接【让别人验证连】
    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

看到这个代码好像也没有讲到暴力破解的东西

是的,是没说哈哈哈哈哈

但是流程还是要走的

那么暴力破解还是要看他的数据包

这个就是我们登录的数据包

可以看见username和Password

他们对应的值都没有加密【就算加密其实也是就要破的,只不过麻烦了一点点】

GET /vulnerabilities/brute/?username=1&password=1&Login=Login HTTP/1.1
Host: dvwa.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Referer: http://dvwa.com/vulnerabilities/brute/
Cookie: PHPSESSID=t5s977oj3kedvdi788a3pl5s95; security=low
Upgrade-Insecure-Requests: 1


首先抓取登录数据包

我们直接右键发送到测试器模式上

我们添加这两个1为爆破点

按照配置就可以了

然后我们点击payloads

在这里插入图片描述

这里有1和2

在这里插入图片描述

分别是我们第一个选择的username和第二选择的Password

所以1就是username2就是password

来到这一步我们就需要配置爆破的字典了

字典是什么牛马呢?

字典是什么?

这里说字典,通俗一点来说就是两个文件,一个文件存在着大量的用户账户,另一个存在的大量的密码

弱口令就是,绕过去猜他的账户和密码是什么

演示

比如我们的账户字典里面是admin admin1 admin2…等等,而我们的密码字典是123,1234,12345

当我们去弱口令的时候啊

就是一个一个去比对

一个一个账户去试

账户是admin密码是123

账户是admin密码是1234

账户是admin密码是12345

账户是admin1密码是123

就这样一个一个去试

导入字典

下面就需要导入字典就可以了

在这里插入图片描述

点击这个就可以导入字典了

1号导入用户字典【字典晚上下载,我前面的文章也有分享字典】

导入完后更换到2号

导入密码字典

在这里插入图片描述

在这里插入图片描述

导入完毕后点击右上角的启动按钮

在这里插入图片描述

进行爆破

在这里插入图片描述

这样他就进行了爆破

那么怎么查看哪些账户和密码是成功的呢

点击Length

在这里插入图片描述

返回值长度排序

在这里插入图片描述

我们发现这有一条数值和其他数值不一样的

他是4704其他的是比他小的4666

那么这个4704对应的账户和密码可能就是正确的,【数值越大可能他就是正确的账户密码】

验证一下

在这里插入图片描述

返回的是一张图片和一段话

Welcome to the password protected area admin

这就是简单级别的暴力破解

在账户和密码的基础上的

Medium

Brute Force 暴力破解

和LOW级别的一样操作

High

Brute Force 暴力破解

代码分析

Brute Force Source
vulnerabilities/brute/source/high.php
<?php

if( isset( $_GET[ 'Login' ] ) ) {
    // Check Anti-CSRF token
    //这里多了一个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 passwor d = '$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
//生成Token
generateSessionToken();

?>



LOW级别代码

<?php
//if判断
    //这里用到了isset函数,这个函数用于检测的是返回值是否为空,就是用于检测变量是否已设置并且非 NULL
if( isset( $_GET[ 'Login' ] ) ) {
    // Get username
    //这里就是设置了一个user变量作用是获取用户输入的用户名称
    $user = $_GET[ 'username' ];

    // Get password
    #这里就是设置了一个pass变量作用是获取用户输入的密码
    $pass = $_GET[ 'password' ];
    //这里设置的密码验证,将用户输入的密码进行MD5加密【用于与数据库进行校验,数据库的密码信息是md5的】
    $pass = md5( $pass );

    // Check the database
    //设了一个MySQL的查询语句查询的是在user表查询条件user是不是等于来自变量user的值,password是不是用户输入的密码
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND passwor d = '$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判断
    if( $result && mysqli_num_rows( $result ) == 1 ) {
        // Get users details【获取用户详细信息】
        $row    = mysqli_fetch_assoc( $result );
        $avatar = $row["avatar"];

        // Login successful
        //登录成功就进去
        //提示Welcome to the password protected area 正常用户名称
        echo "<p>Welcome to the password protected area {$user}</p>";
        //输出一个照片
        echo "<img src=\"{$avatar}\" />";
    }
    else {
        // Login failed
        //登录失败就提示Username and/or password incorrect.
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

    //账户密码验证完关闭与数据库的连接【让别人验证连】
    ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}

?>

那么high级别这关

最大的区别在于tkoen

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

操作

首先一样是先抓包

在这里插入图片描述

然后发送到测试器模式下

右键选择

在这里插入图片描述

那么需要设置三个爆破点

在这里插入图片描述

照图设置

设置好后

点击options

在这里插入图片描述

并找到

Grep-Extract

在这里插入图片描述

点击add

在这里插入图片描述

刷新后我们要找到token部分

在这里插入图片描述

并且我们还要把值赋值下来

后面有用

bdfe35f735cfe61010fba7de600c4850

然后点击OK

在这里插入图片描述

然后呢往下面划

找到

Redirections

点上这个Always

在这里插入图片描述

然后设置线程

点击Resource Pool

在这里插入图片描述

在这里插入图片描述

弄完后点击

payloads

在这里插入图片描述

就需要设置账户密码什么的了

账户和密码和前面差不多

但是tokon

有的不一样

类型选择Recursive grep

在这里插入图片描述

设置完这些后

点击启动

在这里插入图片描述

长度最长的

一个对应值

我们尝试登录试试

在这里插入图片描述

返回了一张图片和

Welcome to the password protected area admin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无聊的知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值