DVWA靶场之Brute Force(暴破)通关

Posted lcxblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DVWA靶场之Brute Force(暴破)通关相关的知识,希望对你有一定的参考价值。

DVWA最经典php/mysql老靶场,简单回顾一下通关流程吧

DVWA十大金刚,也是最常见的十种漏洞利用:Brute Force(暴破)、Command Injection(命令行注入)、CSRF(跨站请求伪造)、File Inclusion(文件包含)、File Upload(文件上传)、Insecure CAPTCHA(不安全的验证码)、SQL Injection(SQL注入)、SQL Injection(Blind)(SQL盲注)、XSS(Reflected)(反射型跨站脚本)、XSS(Stored)(存储型跨站脚本)

技术图片

靶场分4个难度,low medium high impossible,难度递增

有源代码,正面不行反面审计突破

本来想一次性写完十个的,后来发现内容量有点大......那就分开写吧

0x01暴破

Low:没啥说的,用户名admin已知,要暴破出密码是什么(如果用户名也不知道,那就要暴破到地老天荒了),简单了很多

Burp suite开始,用户名输admin,密码随便写,打开截断,send to intruder,选中密码部分,攻击类型选狙击手,payloads中加密码字典,start attack开搞

另:可以利用sql注入,源代码$query= "SELECT * FROM `users` WHERE user = ‘$user‘AND password=‘$pass‘;";

那么用户名就可以admin’#  截断后面的,密码也不用输入了

Medium

技术图片

多了个函数mysql_real_escape_string,基本可以抵御注入……吧(大佬绕过帖子 https://www.cnblogs.com/Safe3/archive/2008/08/22/1274095.html),pass有md5(),注入会麻烦,不过这本来就是暴破,不注入了,用暴破的方法就好

重复low级别的操作即可

High

技术图片

增加了checkToken、stripslashes剥离反斜杠、mysql_real_escape_string转义,更安全了,无脑暴破应该是不行了

技术图片

因为每次服务器回到登录界面,都会给你一个user_token,你记住喽,下次再登录带着这个user_token一起提交给服务器,服务器先检查user_token,对了,再做sql查询,不对,一边玩去吧

技术图片

由于有两个参数user_token和password需要暴破,所以这次将请求包发到intruder后,将这两个参数处上标,选草叉模式,因为要两个位置两个payload分别暴破,你暴破你的,我暴破我的

Password还用原来的字典payload就行,如何搞user_token呢?

在intruder模块下的option中,找到Grep – Extract,点击Add,fetch response,获取一下这次请求返回的结果,二话不说先把返回包中<input type=‘hidden‘ name=‘user_token‘ value=……>此处的value值复制到小本儿上,一会要用,之后点ok,一定把request engine中 number of threads改成1,否则会报错,recursive grep payloads cannot be used with multiple request threads

返回payloads栏目,payload 1 选原来强度暴破的字典

payload 2 选择payload type为“Recursive grep”

initial payload for first request粘贴之前复制到小本儿上的token,最后start attack 开搞

把上次请求得到的按服务器规则生成的token作为本次,下次,下下次,往后无数次请求的参数暴破,就没有报错,看length不一样的那个就是密码

另:第一反应是写py,应该也可以,后续写再好补上

Impossible:嗯。。。。。。代码中好像不仅写了时间检测的方法,连续登录时间区分不开就会把账户锁置1,还用了一个叫PDO(PHP数据对象)的东西

PDO在PHP5.1版本以后存在,按官方说法是一个轻量级的、具有兼容接口的PHP数据连接拓展。它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口。

遗憾的是,我们没法通过PDO本身来执行数据库操作

$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();

比较以前低级别的

$query  = "SELECT * FROM `users` WHERE user = ‘$user‘ AND password = ‘$pass‘;";

$result = mysql_query( $query ) or die( ‘<pre>‘ . mysql_error() . ‘</pre>‘ );

中间加了一层,莫得办法

 

附:关于burp suite暴破的四种方法

 

以上是关于DVWA靶场之Brute Force(暴破)通关的主要内容,如果未能解决你的问题,请参考以下文章

初二DVWA之Brute Force (密码爆破)

20171121早DVWA练习:low级别之Brute Force

DVWA [Brute Force]

Lab: Broken brute-force protection, IP block;缺陷暴力防御,IP锁靶场复盘

Lab: Broken brute-force protection, multiple credentials per request:以多个身份凭据破坏暴力保护靶场链接

Lab: 2FA bypass using a brute-force attack:暴力破解双重验证靶场复盘(困难级别)