DVWA——Brute Force 暴力破解 Low

界面:在这里插入图片描述
目标:
在这里插入图片描述
这里的暴力破解就是,使用自己的用户名和密码字典,一个个尝试是否能登陆成功,即穷举。
BurpSuit暴力破解使用教程.

一、打开BurpSuit,配置好代理,准备抓取浏览器的数据包。

在这里插入图片描述

二、在DVWA界面表单中随意输入用户名和密码,然后点击"Login"提交。

例如:
Username:talentq
Password:123456
在这里插入图片描述

三、提交后通过BurpSuit实施暴力破解。
1、表单提交后,BurpSuit就会截取到数据包;

在这里插入图片描述

2、在空白处右键选择"Send to Intruder",或者直接按Ctrl+I键;

在这里插入图片描述

3、进出Intruder,清除所有原来默认的变量;

在这里插入图片描述

4、选择Attack Type为Cluster Bomb,将用户名和密码的值设置为变量;

在这里插入图片描述

5、分别对每一个参数选择字典;

在这里插入图片描述

6、开始暴力破解后,观察新弹出窗口的Length字段,长度不同的很可能就是破解成功的情况。在这里插入图片描述

我选择的字典太大了,所以会跑很长时间,不过只要字典里有正确的用户名和密码,总会破解成功的。另外如果用户名或者密码复杂的话,暴力破解难度就会很大了。

DVWA这题数据库里面有五个用户。一般大家都先默认有用户名admin(这题也的确有),然后只针对密码爆破。这种只有一个参数的爆破在选择Attack Type时选择Sniper。

题目的"Objective"中提到,目标是破解管理员密码(即用户名为admin的账号密码),破解其他的算作加分项,但我毫无头绪。难道硬跑用户名?这得跑到哪一年。

上述步骤可能不完善,请见谅,写得详尽的确很费时间,我也是边学边写的。

另外为了增加游戏体验,可以手动在自己的字典里加入正确的用户名和密码。这里我把把答案贴出来:
在这里插入图片描述

四、查看后端源码
<?php

if( isset( $_GET[ 'Login' ] ) ) {
    // Get username
    $user = $_GET[ 'username' ];

    // Get password
    $pass = $_GET[ 'password' ];
    $pass = md5( $pass );

    // Check the 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
        echo "<pre><br />Username and/or password incorrect.</pre>";
    }

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

?>

为了方便学习,也贴出浏览器网页的源代码里的表单:
表单
PHP源代码我只能看个意思,实际上里面的语法、结构、函数等我是很模糊的。接下来就来学习源代码。
第一眼印象:代码被<?php 代码内容?>括起来,里面有一个if else结构,最后还有一行不知道什么东西。

<?php ?>:PHP代码需要写在这个标签里。

$_GET变量菜鸟教程.

isset()函数菜鸟教程.

md5()函数菜鸟教程.

单引号与双引号的区别PHP中单引号和双引号的区别.

mysqli_query()函数菜鸟教程.

$GLOBALSPHP Manual.

die()函数菜鸟教程.

is_object() 函数菜鸟教程.

mysqli_error()函数菜鸟教程.参数是数据库连接,这个连接是一个对象。看到这里,我感觉已经避不开mysqli_connect()这个函数了。

mysqli_connect()函数菜鸟教程. 返回值是表示连接的对象。这个连接对象是什么呢,我使用var_dump()打印出来是一堆版本、错误、线程等信息,难怪许多函数需要它作为参数。

mysqli_connect_error()函数菜鸟教程. 没有参数,返回一个描述错误的字符串。如果没有错误发生则返回 NULL。

mysqli_num_rows()函数菜鸟教程. 返回结果集的行数。

mysqli_fetch_assoc()函数菜鸟教程. 从结果集中取得一行作为关联数组。

mysqli_close()函数菜鸟教程. 关闭数据库连接,如果成功则返回 TRUE,如果失败则返回 FALSE。

在这里插一句,一直对PHP中的 TRUEFALSE 的大小写很迷惑,在这里贴上大小写的讲解。PHP中的变量名、函数名等大小写有区别吗?.

is_null()函数菜鸟教程. 检测变量是否为 NULL,如果指定变量为 NULL,则返回 TRUE,否则返回 FALSE。

五、代码学习结束后,发现Low等级对username和password字段没有任何过滤,所以这里也存在SQL注入。(默认知道存在用户名admin)

输入:
username:admin’ or ‘1’='1
password:(随便输入或者为空)
在这里插入图片描述
结果:
在这里插入图片描述

输入:
username:admin’#
password:(随便输入或者为空)
在这里插入图片描述
结果:
在这里插入图片描述
由于后端代码对查询的行数进行了限制,如果查询的结果超过1行就会返回Username and/or password incorrect.,所以我还是不知道如何查询到其他的用户名和密码。

DVWA——Brute Force的Low级别结束!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值