1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > DVWA靶场Brute Force 暴力破解审计通关教程

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

时间:2021-04-17 21:20:23

相关推荐

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

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

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

LOW

Brute Force 暴力破解

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

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

代码分析

<?php//if判断//这里用到了isset函数,这个函数用于检测的是返回值是否为空,就是用于检测变量是否已设置并且非 NULLif( 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.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/0101 Firefox/103.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-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.2Accept-Encoding: gzip, deflateDNT: 1Connection: closeReferer: /vulnerabilities/brute/Cookie: PHPSESSID=t5s977oj3kedvdi788a3pl5s95; security=lowUpgrade-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 Sourcevulnerabilities/brute/source/high.php<?phpif( 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 successfulecho "<p>Welcome to the password protected area {$user}</p>";echo "<img src=\"{$avatar}\" />";}else {// Login failedsleep( 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//生成TokengenerateSessionToken();?>

LOW级别代码

<?php//if判断//这里用到了isset函数,这个函数用于检测的是返回值是否为空,就是用于检测变量是否已设置并且非 NULLif( 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。