Dvwa之暴力破解全级别学习笔记

这篇具有很好参考价值的文章主要介绍了Dvwa之暴力破解全级别学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

暴力破解

暴力破解也可称为穷举法、枚举法,是一种针对于密码的破译方法,将密码进行逐个推算直到找出真正的密码为止。设置长而复杂的密码、在不同的地方使用不同的密码、避免使用个人信息作为密码、定期修改密码等是防御暴力破解的有效方法。但从理论上来说,只要字典足够庞大,枚举总是能够成功的,也就是说任何密码都能被破解,只是时间的问题

暴力破解我的印象就是用暴力手段拿到密码(当然不是去到管理员面前去武力逼迫他交出密码),就是一遍一遍去尝试密码直到密码正确。

需要用到burp suite

Low级别

Dvwa之暴力破解全级别学习笔记

 撒也不说上来就用burp suite 抓包。

Dvwa之暴力破解全级别学习笔记

 

将数据包发送到inturder

Dvwa之暴力破解全级别学习笔记

 

在位置哪里选择sniper攻击类型

Dvwa之暴力破解全级别学习笔记

 

选完攻击类型首先需要清除$,然后对需要暴力破解的地方添加$,因为我们要爆破密码所以对密码所在位置添加$。

Dvwa之暴力破解全级别学习笔记

到载荷这里根据自己的情况选择。我这选择使用字典进行爆破

Dvwa之暴力破解全级别学习笔记

我的字典都是一些常用的弱口令,大家也可以根据自己收集到的信息进行使用工具生成字典,使用这个字典进行爆破,这样有助于密码的爆破,缩短爆破时间。

Dvwa之暴力破解全级别学习笔记

 

在选项这里可以选择自己需要的项目,不选择默认也行。我在这里选择了Grep-match进行标记,能更清晰的更快速的找到爆破出来的密码。步骤:先清屏,再把在dvwa页面输错密码返回的提示添加进去。如果没有返回提示,也可以根据返回的数据包添加独特的代码也可以达到相同的结果。

Dvwa之暴力破解全级别学习笔记

 

完成以上设置后点击攻击,就会得到爆破出来的密码。没有打勾的便是密码,一目了然。没有设置标记的也不用慌,可以根据返回的数据包长度进行判断,一般鹤立鸡群的就是爆破出来的密码,就像本次爆破中正确的密码长度为4635,而错误的密码长度都为4585。

Dvwa之暴力破解全级别学习笔记

 

 

到靶场验证密码

Dvwa之暴力破解全级别学习笔记

成功登录

Medium

界面一致,和low级别一样步骤尝试一下就是需要的时间长了一些,呀,成功爆破出密码

Dvwa之暴力破解全级别学习笔记

 Dvwa之暴力破解全级别学习笔记

 

成功登录

所以medium到底升级了什么?查看一下源码

原来是添加了注入防护和在密码错误的时候sleep(2)所以才会需要更长的时间sleep其实对爆破产生结果来说没有什么影响,就像龟兔赛跑,不停向前很快就能完成任务,要是你一直走走停停最后还是走到了终点,但花费的时间可不是一星半点,等你爆破出密码说不定人家早就改了。

High

表面上没有什么区别,一抓包发现不对劲,怎么多了个user_token(保护用户的用户名及密码多次提交,以防密码泄露)

Dvwa之暴力破解全级别学习笔记

 

老样子,先抓包

Dvwa之暴力破解全级别学习笔记

 

先发送到重发器重新发一下数据包

Dvwa之暴力破解全级别学习笔记

 

再在重发器中发给intruder,选择Pitchfork,把password和user_token用$圈起来

Dvwa之暴力破解全级别学习笔记

 

然后设置载荷,第一个就是password设置选择像以前一样。

Dvwa之暴力破解全级别学习笔记

 

在选项里先找到Grep_Extract,选择添加,然后找到value值并框选起来,最后点击OK。

Dvwa之暴力破解全级别学习笔记

最后记得划到最地选择总是(很重要不要忘了)

Dvwa之暴力破解全级别学习笔记

 

回到载荷设置2,也就是user_token,选择递归

Dvwa之暴力破解全级别学习笔记

 

开始攻击

Dvwa之暴力破解全级别学习笔记

 

Imporissble

这个难度是最高的难度存在就是要让我们了解暴力破解应该怎么防御,查看源代码发现其中的GET提交方式改为POST提交方式,也增加了token校验机制,限制的登录的次数,在登录失败3次,就会锁定该账号,需要等待15秒,然后才能重新尝试输入密码。

<?php

if( isset( $_POST[ 'Login' ] ) && isset ($_POST['username']) && isset ($_POST['password']) ) {

    // Check Anti-CSRF token

    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );


    // Sanitise username input

    $user = $_POST[ '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 = $_POST[ '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 );


    // Default values

    $total_failed_login = 3;

    $lockout_time       = 15;

    $account_locked     = false;


    // Check the database (Check user information)

    $data = $db->prepare( 'SELECT failed_login, last_login FROM users WHERE user = (:user) LIMIT 1;' );

    $data->bindParam( ':user', $user, PDO::PARAM_STR );

    $data->execute();

    $row = $data->fetch();


    // Check to see if the user has been locked out.

    if( ( $data->rowCount() == 1 ) && ( $row[ 'failed_login' ] >= $total_failed_login ) )  {

        // User locked out.  Note, using this method would allow for user enumeration!

        //echo "<pre><br />This account has been locked due to too many incorrect logins.</pre>";


        // Calculate when the user would be allowed to login again

        $last_login = strtotime( $row[ 'last_login' ] );

        $timeout    = $last_login + ($lockout_time * 60);

        $timenow    = time();


        /*

        print "The last login was: " . date ("h:i:s", $last_login) . "<br />";

        print "The timenow is: " . date ("h:i:s", $timenow) . "<br />";

        print "The timeout is: " . date ("h:i:s", $timeout) . "<br />";

        */


        // Check to see if enough time has passed, if it hasn't locked the account

        if( $timenow < $timeout ) {

            $account_locked = true;

            // print "The account is locked<br />";

        }

    }


    // Check the database (if username matches the password)

    $data = $db->prepare( 'SELECT * FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );

    $data->bindParam( ':user', $user, PDO::PARAM_STR);

    $data->bindParam( ':password', $pass, PDO::PARAM_STR );

    $data->execute();

    $row = $data->fetch();


    // If its a valid login...

    if( ( $data->rowCount() == 1 ) && ( $account_locked == false ) ) {

        // Get users details

        $avatar       = $row[ 'avatar' ];

        $failed_login = $row[ 'failed_login' ];

        $last_login   = $row[ 'last_login' ];


        // Login successful

        echo "<p>Welcome to the password protected area <em>{$user}</em></p>";

        echo "<img src=\"{$avatar}\" />";


        // Had the account been locked out since last login?

        if( $failed_login >= $total_failed_login ) {

            echo "<p><em>Warning</em>: Someone might of been brute forcing your account.</p>";

            echo "<p>Number of login attempts: <em>{$failed_login}</em>.<br />Last login attempt was at: <em>${last_login}</em>.</p>";

        }


        // Reset bad login count

        $data = $db->prepare( 'UPDATE users SET failed_login = "0" WHERE user = (:user) LIMIT 1;' );

        $data->bindParam( ':user', $user, PDO::PARAM_STR );

        $data->execute();

    } else {

        // Login failed

        sleep( rand( 2, 4 ) );


        // Give the user some feedback

        echo "<pre><br />Username and/or password incorrect.<br /><br/>Alternative, the account has been locked because of too many failed logins.<br />If this is the case, <em>please try again in {$lockout_time} minutes</em>.</pre>";


        // Update bad login count

        $data = $db->prepare( 'UPDATE users SET failed_login = (failed_login + 1) WHERE user = (:user) LIMIT 1;' );

        $data->bindParam( ':user', $user, PDO::PARAM_STR );

        $data->execute();

    }


    // Set the last login time

    $data = $db->prepare( 'UPDATE users SET last_login = now() WHERE user = (:user) LIMIT 1;' );

    $data->bindParam( ':user', $user, PDO::PARAM_STR );

    $data->execute();

}


// Generate Anti-CSRF token

generateSessionToken();


?>

总而言之:只要密码弄复杂一点,不要整那些弱口令密码,就能让不怀好意的人一辈子都爆破不出你的密码,如果他是个欧皇,就当我没说。

参考于:DVWA靶场通关----(1) Brute Force教程 - 常青园 - 博客园

本文为学习笔记,仅供学习!!!文章来源地址https://www.toymoban.com/news/detail-434260.html

到了这里,关于Dvwa之暴力破解全级别学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DVWA(1)暴力破解(Brute Force) LOW-HIGHT 操作记录

    初次接触DVWA,写下自己的操作记录,希望可以帮助每个刚接触DVWA的新手,同时希望可以提升自己的技术。注:如有操作不当的地方希望可以得到大神指导、交流。也感谢之前查阅的各种大神提供的博客。 观察源代码,发现没有添加防护措施。 首先第一种方法我们可以使用万

    2024年02月08日
    浏览(100)
  • 网络安全进阶学习第一课——认证崩溃之弱口令与暴力破解

    弱口令没有严格和准确的定义,通常认为它是容易被别人猜测到或被工具破解的口令均为弱口令。 在允许社会工程学攻击的情况下,密码中仅带有与自身相关的信息也可以称之为弱口令,如 受害者为王伟,通过简单的社工信息收集到生日为19920801 那么以wangwei123、wangwei19920

    2024年02月08日
    浏览(55)
  • 口令暴力破解--Telnet协议暴力破解、数据库暴力破解与远程桌面暴力破解

    Telnet        Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。要开始一个telnet会话,必须输入用户名和密码来登录服务器。而一般服务器不会对用户名和密码的登录尝试做限制,因此

    2023年04月19日
    浏览(62)
  • 安全小课堂丨什么是暴力破解?如何防止暴力破解

    什么是暴力破解? 暴力破解也可称为穷举法、枚举法,是一种比较流行的密码破译方法,也就是将密码进行一一推算直到找出正确的密码为止。比如一个6位并且全部由数字组成的密码,可能有100万种组合,也就是说最多需要尝试100万次才能找到正确的密码,但也有可能尝试

    2024年04月28日
    浏览(51)
  • python暴力破解压缩包密码(python暴力破解zip压缩包)

    简介 : ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME格式为application/zip。当前,ZIP格式属于几种主流的压缩格式之一,其竞争者包括RAR格式以及开放源

    2024年02月03日
    浏览(60)
  • 暴力破解——Web安全

    原理          所谓“暴力破解” : 就是用穷举法来算,也就是说从键盘上的字母和数字一个一个的试直到找到正确的密码。         在进行暴力破解时,我们经常采用 字典 进行破解。字典就是攻击者把自己认为的正确密码,以及碰到的密码提前写入到文档里去。在进

    2024年02月09日
    浏览(50)
  • SSH暴力破解

    Linux是开源系统,系统本身因漏洞造成的攻击相对比较少,主要集中在SSH攻击; SSH所采用的加密机制,可以防止数据传输过程中信息泄露; SSH基于用户名密码的身份验证,容易遭受密码暴力破解攻击; SSH暴力破解工具  Hydra、Medusa、msf 大部分攻击都是针对Linux服务器默认管理

    2024年02月08日
    浏览(53)
  • pikachu靶场之暴力破解

    目录 一、什么是暴力破解 二、burpsuite四种攻击类型   1. sniper(狙击手模式)  2. battering ram(攻城锤模式) 3. pitchfrk(音叉模式)   4. cluster bomb(集数炸弹模式)    三、pikachu暴力破解 1. 基于表单的暴力破解 2. 验证码绕过(on server)  3. 验证码绕过(on client) 4. on client和on server 5. token防

    2024年02月05日
    浏览(38)
  • 暴力破解zip压缩包

    1:Windows下使用工具archpr工具进行破解 bandzip专业版也可以破解 2:python脚本破解 3:kali破解 kali自带的字典 cd /usr/share/wordlists ls sudo gunzip rockyou.txt.gz ls cat rockyou.txt crunch 3 4 1234 生成一个长度最小三位,最大四位的密码,且都由1234中的4个数字组成 crunch 3 3 123 /root/Desktop/pass.txt  把

    2024年02月09日
    浏览(42)
  • 密码暴力破解、渗透测试流程

    信息收集 1、扫描的价值 对攻击者来说:根据扫描结果,来决定进一步的攻击行动; 能够更有针对性地选择攻击方法、攻击工具,节省攻击时间 对防护者来说:根据扫描结果,判断应采取什么样的安全策略; 封堵漏洞、加固系统、完善访问控制 2、nmap Network Mapper,一款开源

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包