DVWA(Damn Vulnerable Web Application)是一个专门设计用于Web渗透测试学习和练习的开源靶场平台。它故意包含了多种常见的Web安全漏洞,供安全研究人员、渗透测试人员和开发者在合法环境中学习和测试攻击技术。

目录

一、brute force (暴力破解)

low 级别

源码审计:

攻击方法一:Burp Suite暴力破解(标准方法)

intruder 模块 (暴力破解核心)

攻击方法二:SQL注入万能密码(绕过验证)



一、brute force (暴力破解)

low 级别

源码审计:
if( isset( $_GET[ 'Login' ] ) ) {
    // Get username
    $user = $_GET[ 'username' ];
      ==直接获取用户输入,无任何过滤==
    // Get password
    $pass = $_GET[ 'password' ];
    $pass = md5( $pass ); ==仅做MD5哈希,无盐值==
      
    // Check the database   直接拼接sql语句,存在sql注入漏洞
    $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 />Username and/or password incorrect.</pre>";
    }

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

?

攻击方法一:Burp Suite暴力破解(标准方法)

在Burpsuite自带浏览器上打开DVWA靶场,使用burp suite进行爆破
首先打开拦截,输入用户名和任意密码,点击login,burp suite 会抓到请求包

注意到是get请求,我们来简单了解一下post 请求和 get请求 的区别

特性GET请求POST请求
设计目的获取/查询资源提交/修改资源
参数位置URL查询字符串(?key=valueHTTP请求体(Body)
可见性参数暴露在地址栏参数不在URL中显示

敏感数据传输如果用GET请求易被泄露

参数以键值对的形式附加在url后

将抓取到的数据包发送给攻击模块intruder:

intruder 模块 (暴力破解核心)

作用:自动化执行重复性攻击,如暴力破解、模糊测试

攻击位置(Positions)配置

设置项功能DVWA配置
Add §标记爆破参数标记username和password
Clear §清除所有标记先清除默认标记
Auto §自动标记所有参数不建议使用(需精确控制)

攻击模式(Attack Type)

模式工作原理适用场景
Sniper单参数,逐位置替换单点测试
Battering ram多参数,相同Payload同时替换同值多字段
Pitchfork多参数,一一对应(行号匹配)已知配对
Cluster bomb ⭐多参数,交叉组合(笛卡尔积)全组合爆破

添加参数

此处Attack type 选择 Cluster bomb(集束炸弹)- 用于同时爆破两个参数
加载预下载的字典

开始攻击

结果分析
观察 Length 列,找到与其他响应长度不同的条目
正确凭证:admin / password


攻击方法二:SQL注入万能密码(绕过验证)

由于Low级别存在SQL注入漏洞,可直接绕过登录
在用户名框输入:

admin' or '1'='1

密码任意

原理分析:
拼接后的SQL语句变为:

SELECT * FROM `users` WHERE user = 'admin' or '1'='1' AND password = 'xxx';

由于 '1'='1' 恒为真,且MySQL中 OR 优先级低于 AND,实际执行逻辑为:

user = 'admin' OR ('1'='1' AND password = 'xxx')

完毕。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐