DVWA 暴力破解全级别

low

说是暴力破解,其实也有SQL注入,比如:

但是用暴破的方式怎么做呢?首先要有个好的字典,这就属于社会工程学了,可以自己平时收集一下好用的字典,不过这里通关演示的话就随便创建一个字典用burp暴就行了,没意思,过!(为啥不写具体过程呢,因为太晚了,还要打开虚拟机,由于种种原因我的burp装在虚拟机里了,所以等有时间再补全详细过程吧)

medium

看下源码吧,这里不是我自己写的,因为懒,而且人家写的挺好的,我自惭形秽。。。

<?php

//是否存在Login变量(标签里面的name),检查是否存在Login按钮

if( isset( $_GET[ 'Login' ] ) ) {

    // Sanitise username input

//获取用户名,存入user变量里

    $user = $_GET[ 'username' ];

//user中x00,n,r,,’,”,x1a转义,防SQL注入

    $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中x00,n,r,,’,”,x1a转义,防SQL注入

    $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 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

        sleep( 2 );

        echo "<pre><br />Username and/or password incorrect.</pre>";

    }

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

}

?>

相比Low级别的代码,Medium级别的代码主要增加了mysql_real_escape_string函数,这个函数会对字符串中的特殊符号(x00,n,r,,’,”,x1a)进行转义,基本上能够抵御sql注入攻击。同时,$pass做了MD5校验,杜绝了通过参数password进行sql注入的可能性。但是,依然没有加入有效的防爆破机制(sleep(2)实在算不上)。

剩下的就是用burp暴破了,和low一样,过!

high

这里开始麻烦起来了,加入了token,那就用burpsuit拿下吧!

步骤如下:

输入用户名admin,随便输入密码然后把包拦截下来如下,发到测试器里选上password和token,类型选Pitchfork:

然后在payload里1选简单清单,然后导入一个字典,注意这里为了做题,一定要包含正确密码。2选递归搜索,并把刚才的token值粘到下面这里:

之后在选项里找到Grep-Extract,点击添加,然后刷新一下获得当前请求的回复,找到token值并选中,之后点ok。

最后在请求引擎里把线程改为1,就可以开始攻击了。

看长度,就它没错了,搞渗透的话,从某某那里听到一句话,事出反常必有妖,密码就是1234,结束!

impossible

加入了账户锁定机制防暴破。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容