DVWA 靶场建立

需要的东西:

phpStudy
链接: https://pan.baidu.com/s/1fJ-5TNtdDZGUf5FhTm245g
提取码:0278

DVWA-master:
链接: https://pan.baidu.com/s/1oJX1h_gABKw9ZTWVF7F_2g
提取码:0278

建议在虚拟机中操作,以防数据库冲突,下面有解释

  1. 安装 phpstudy,然后打开 ApacheMySQL

QQ_1732805175726

  1. 访问 127.0.0.1 ,如果显示站点创建成功就成功了

QQ_1732805262644

  1. 解压 DVWA 的压缩包,然后将整个目录放到 phpstudyWWW 目录下,然后在 phpstudy 主页点击创建网站,然后填写域名信息,比如我的设置为 demo.dvwa.com ,然后根目录选择为刚刚放置在 WWW 目录下的 DVWA 目录

QQ_1732805509116

  1. 然后在数据库界面创建数据库

QQ_1732805617647

  1. DVWA 中的配置文件中的数据库信息修改为当前创建的数据库,找到 DVWA 中的对应文件,比如我的 C:\phpstudy_pro\WWW\DVWA\config 中的 config.inc.php 文件(如果找到的是 config.inc 说明电脑中隐藏了文件拓展名,建议去打开它),然后右击以记事本打开,修改对应的信息,比如我的

QQ_1732805870323

  1. 然后在浏览器中输入 demo.dvwa.com ,打开网站,如果出现这个界面,点击 create/Reset Database ,如果爆以下错误,说明上述操作中数据库没配置好

QQ_1732805967707

  1. 如果确认了上述数据库没有对应失败,还是错误,说明本地数据库冲突了,也就是可能原本电脑中有数据库,而 phpstudy 安装的时候也会装数据库,可能就导致冲突,无法正确识别到对应的数据库,所以建议在虚拟机中操作也是这个原因,否则就删除本地的 Mysql 这肯定是不愿希望的

  2. 如果上述没问题,就进入了以下界面,输入 adminpassword 即可登录成功

QQ_1732806344801

闯关

  1. 首先调整 DVWA 靶场安全级别为 High

QQ_1732720739961

  1. 找到侧边的 File Inclusion ,然后点击右下角的查看源代码

QQ_1732806427906

  1. 查看源代码
<?php

// The page we wish to display
$file = $_GET[ 'page' ];

// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn't the page we want!
    echo "ERROR: File not found!";
    exit;
}

?>

解析代码

$file = $_GET['page'];
  • 用户通过 URL 请求传递参数,例如 ?page=file1.php
  • 变量 $file 被赋值为 GET 参数中键为 page 的值
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
    // This isn't the page we want!
    echo "ERROR: File not found!";
    exit;
}
  • 条件检查是否 $file 的值等于指定的文件名之一
  • 如果 $file 不是以文件名以 file 开头,或者 include.php ,这两个都不满足,则视为非法文件:
    • 输出错误信息:ERROR: File not found!
    • 使用 exit 终止脚本执行
  1. 由于考虑到上述检测匹配需要以 file 开头,所以我们需要一个 file 开头且可以访问的一个文件,这就想到在 Windows 平台下可以使用 file 协议绕过防护策略,使用它访问本地文件系统,比如正常访问的

QQ_1732806887566

  1. 了解完这些后我们开始进行攻击,这里我们将 url 进行构造 "file:///[绝对路径]" 的格式得到 phpinfo.php
  2. page= 后面的 include.php 修改为实际的 file:///... 内容,如我修改后变为了 ?page=file:///C:\phpstudy_pro\WWW\DVWA\phpinfo.php\ 修改为 / 也是可以的

QQ_1732967369721

  1. 然后回车,会出现这个界面

QQ_1732807168810

  1. 可以看出攻击成功了,利用规则获取了 phpinfo.php 文件
  • phpinfo 页面包含了大量的关于 PHP 的当前状态环境信息、PHP 的编译选项和扩展、操作系统版本信息、服务器系统变量信息、Web 应用物理路径信息等等,利用这些信息配合其他漏洞可能导致网站被渗透或者系统提权等危害

只管努力,剩下的交给天意