DVWA靶机通关系列--1.Brute Force(暴力破解)(解题思路+审计分析)
前言
最近在复习一些基础的常见web漏洞,经典的靶机大家肯定最先想到的就是DVWA了,我用的是1.10版本,目前里面的题型包括了14个专题板块,题目难度也分为低(low)中(medium)高(high)和不可能(impossible)几个等级。
Brute Force(暴力破解)
Command Injection(命令注入)
CSRF(跨站请求伪造)
File Inclusion(文件包含)
File Upload(文件上传)
Insecure CAPTCHA(不安全验证码)
SQL Injection(SQL注入)
SQL Injection (Blind)(SQL盲注)
Weak Session IDs(弱会话IDs)
XSS (DOM)(XSS DOM型)
XSS (Reflected)(XSS 反射型)
XSS (Stored)(XSS存储型)
CSP Bypass(内容安全策略)
JavaScript(JS攻击)
借此机会,在复习这些漏洞的过程中也和大家分享我的一些做题经验。
实验过程中会经常用到Burp Suite工具,没有此软件的可以参考我的另一篇文章学习如何安装:https://blog.csdn.net/ElsonHY/article/details/109731444
提醒:本系列只针对低中高三种难度的讲解,不可能等级我们主要来分析他的防御方式。由于本专题无法一次性写完,小R决定会不定时进行更新。
0x01 Brute Force(暴力破解)
CLASS:LOW
先随意输入用户名和密码,查看报错显示用户名 和/或 密码不正确,语句严谨无法判断用户名是否有效。
密码爆破:打开BurpSuite抓包,可以看出是GET类型,将包导入Intruder(测试器),在positions设置攻击类型和负载位置,攻击类型选择狙击手模式(Sinper),username的值我用admin尝试,(也可以直接将username的值也加入负载,配置对应的用户字典。)负载位置设置在password的值上,下一步点击Payloads选项卡。
在例表中添加中选择密码字典(BP内置字典),也可以载入自己的字典文件,然后点击开始攻击。
在爆破结果中查看响应长度和其他不一样的请求,进行对比确认,最后确定密码"password"是有效密码。
源码分析:
<?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