news 2026/4/16 15:09:46

从靶场搭建到源码分析:Pikachu+PHPStudy环境下的SQL注入漏洞初探

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从靶场搭建到源码分析:Pikachu+PHPStudy环境下的SQL注入漏洞初探

从靶场搭建到源码分析:Pikachu+PHPStudy环境下的SQL注入漏洞初探

在网络安全领域,靶场环境是学习漏洞原理和攻防技术的绝佳实验平台。Pikachu靶场以其丰富的漏洞场景和清晰的代码结构,成为众多安全初学者的首选。本文将带您从零开始搭建Pikachu靶场环境,并深入分析其中最具代表性的SQL注入漏洞模块,通过实战演练与源码解读相结合的方式,帮助您真正理解漏洞背后的技术原理。

1. 环境搭建与初始化

搭建Pikachu靶场需要准备两个核心组件:Pikachu源码和PHPStudy集成环境。以下是具体步骤:

  1. 下载Pikachu源码

    git clone https://github.com/zhuifengshaonianhanlu/pikachu.git

    或直接从GitHub仓库下载ZIP压缩包。

  2. 安装PHPStudy

    • 访问小皮面板官网下载最新版本
    • 选择与操作系统匹配的安装包(Windows推荐64位版本)
    • 安装路径避免使用中文或空格
  3. 环境配置关键点

    • 将解压后的Pikachu文件夹放置在PHPStudy的www目录下
    • 修改/pikachu/inc/config.inc.php中的数据库配置:
      $dbuser = 'root'; //数据库用户名 $dbpass = 'root'; //数据库密码 $dbname = 'pikachu'; //数据库名
    • 在PHPStudy中创建网站,PHP版本选择5.6.9

注意:首次访问必须通过127.0.0.1/install.php完成初始化,否则会出现数据库连接错误。

2. SQL注入漏洞实战演练

Pikachu靶场提供了多种SQL注入场景,我们先从最基本的数字型注入开始:

2.1 数字型注入分析

在"SQL-Inject"模块选择"数字型注入",提交用户ID查询时,观察URL参数变化:

http://127.0.0.1/vul/sqli/sqli_id.php?id=1

尝试构造特殊Payload:

1 AND 1=1 -- 1 AND 1=2 --

通过返回结果差异判断是否存在注入点。

2.2 联合查询获取数据库信息

利用UNION SELECT提取敏感信息:

1 UNION SELECT 1,group_concat(schema_name) FROM information_schema.schemata --

关键信息获取Payload示例:

目标信息SQL语句
所有数据库UNION SELECT 1,group_concat(schema_name) FROM information_schema.schemata
当前数据库表UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema=database()
用户表字段UNION SELECT 1,group_concat(column_name) FROM information_schema.columns WHERE table_name='users'

3. 漏洞源码深度解析

理解漏洞原理需要分析Pikachu后端处理逻辑,主要关注两个文件:

3.1 数据库连接配置

/inc/config.inc.php中定义了数据库连接方式:

$link = mysqli_connect($host,$dbuser,$dbpass) or die('数据库连接失败'); mysqli_select_db($link,$dbname) or die('数据库选择失败'); mysqli_query($link,"set names utf8");

3.2 注入点代码分析

查看/vul/sqli/sqli_id.php关键代码:

$id = $_GET['id']; $query = "SELECT username,email FROM member WHERE id=$id"; $result = mysqli_query($link,$query);

漏洞成因:

  1. 直接拼接用户输入的$id到SQL语句
  2. 未对输入参数进行任何过滤或预处理
  3. 错误信息直接返回给客户端

4. 防御方案与安全实践

针对发现的SQL注入漏洞,我们可以实施多种防护措施:

4.1 参数化查询改造

使用预处理语句修复漏洞:

$stmt = $link->prepare("SELECT username,email FROM member WHERE id=?"); $stmt->bind_param("i", $id); $stmt->execute(); $result = $stmt->get_result();

4.2 输入过滤策略

实施白名单验证:

if(!preg_match('/^\d+$/', $id)) { die("非法输入参数"); }

4.3 最小权限原则

数据库用户权限配置建议:

权限级别适用场景风险等级
root数据库管理极高
读写权限应用常规操作
只读权限查询类操作

在实际项目中,应该为Web应用创建专属数据库用户,仅授予必要权限。

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

如何用Rainmeter在5分钟内打造专业级Windows桌面监控中心

如何用Rainmeter在5分钟内打造专业级Windows桌面监控中心 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter 厌倦了Windows千篇一律的桌面?想要一个既美观又实用的个性化工作空间&…

作者头像 李华
网站建设 2026/4/16 14:56:52

2024最新Sentinel-2影像下载保姆级教程(附欧空局新网址避坑指南)

2024年Sentinel-2遥感影像高效获取与预处理实战指南 当我们需要监测农作物长势、评估城市扩张或追踪森林变化时,高分辨率卫星影像成为不可或缺的数据源。作为目前最受欢迎的免费遥感数据之一,Sentinel-2以其10米空间分辨率和5天重访周期,在农…

作者头像 李华
网站建设 2026/4/16 14:55:25

bypy:企业级百度云自动化管理解决方案的技术架构与实施指南

bypy:企业级百度云自动化管理解决方案的技术架构与实施指南 【免费下载链接】bypy Python client for Baidu Yun (Personal Cloud Storage) 百度云/百度网盘Python客户端 项目地址: https://gitcode.com/gh_mirrors/by/bypy 在数据驱动决策的数字化时代&…

作者头像 李华