SQL注入之报错注入方法汇总

报错注入

什么是报错注入

0.1 定义:
报错注入是通过特殊函数错误使用并使其输出错误结果来获取信息的。是一种页面响应形式。

响应过程:

用户在前台页面输入检索内容后台将前台页面上输入的检索内容无加区别的拼接成sql语句,送给数据库执行数据库将执行的结果返回后台,后台将数据库执行的结果无加区别的显示在前台页面

报错注入存在基础:后台对于输入输出的合理性没有做检查

0.2 类型

在这里插入图片描述

1、ExtractValue函数

ExtractValue()函数是MySQL数据库中用于提取XML数据中指定路径的值的函数。它基于XPath语法,允许用户根据特定的路径表达式从XML格式的数据中获取所需信息。以下是关于MySQL中ExtractValue()函数的详细讲解:

1.1语法

EXTRACTVALUE(xml_data, xpath_expression)
  • xml_data: 包含XML数据的字段或表达式。
  • xpath_expression: XPath路径表达式,用于指定要提取值的位置。

1.2 在sql注入中

在使用ExtractValue()函数时,无效的XPath表达式(xpath_expression)可能会导致报错。通过将恶意的SQL语句拼接放在xpath_expression处,可以使得该条SQL语句报错,并执行我们注入的恶意语句
例如:

SELECT * FROM users WHERE username = 'input_username' AND password = ExtractValue(1, CONCAT('username:', (SELECT database())));
1

其中payloadAND password = ExtractValue(1, CONCAT('username:', (SELECT database())));使用了extractvalue函数,将xml数据设置为1,xpath_expression部分设置为CONCAT('username:', (SELECT database())
此时的xpath_expression为“username: 数据库名”,由于1中并没有“username: 数据库名”因此会产生报错,可以从报错结果中看到我们想要的数据库名

2、uodataxml()函数

2.1 语法:

UPDATEXML(XML_document, XPath_string,new_value);

  • 第一个参数:XML_document是String格式,为XML文档对象的名称
  • 第二个参数:XPath_string (Xpath格式的字符串),Xpath语法
  • 第三个参数:new_value,string格式,替换查找到的符合条件的数据

2.2 用法:

将书标题修改为1

SELECT updatexml(doc,'/book/title','1') FROM xml;
直接将<title></title>替换为1

在这里插入图片描述

3、floor()函数

在这里插入图片描述

3.1 原理

floor()报错注入的原因是group by在向临时表插入数据时,由于rand()多次计算导致插入临时表时主键重复,从而报错,又因为报错前concat()中的SQL语句或函数被执行,所以该语句报错且被抛出的主键是SQL语句或函数执行后的结果。

参考文章:https://www.secpulse.com/archives/140616.html

这篇文章对于floor的介绍十分详细,

4、NAME_CONST()

exists(select * from (select * from(selectname_const(@@version,0)) as a join (select name_const(@@version,0)) as b) as c);

了解更多:https://www.cnblogs.com/Triomphe/p/9489639.html

5、基于join的报错方式(已知库名和表名时可用来获取列名或用于绕过","被注释的情况)

(1)Payload:

select * from(select * from 库名.表名 a join 库名.表名 b)c

(2)各元素作用

join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

可以使用的 JOIN 类型,以及它们之间的差异。

1.JOIN: 如果表中有至少一个匹配,则返回行

2.LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

3.RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

4.FULL JOIN: 只要其中一个表中存在匹配,就返回行

(3)join报错注入分析:

1.比较列名是否有重复,会返回重复列名。

2.可作为连接符代替特殊字符。

(4)使用场景

已知库名和表名时可用来获取列名或用于绕过","被注释的情况。

6、基于exp的报错方式

(1)Payload:

exp(~(select * from (select user())a))

(2)各元素作用

MySQL中,explnlog的功能相反,简单介绍下,就是logln都返回以e为底数的对数

指数函数为对数函数的反函数,exp()即为以e为底的对数函数(exp注入适用于MySQL5.5.5以上)

(3)exp报错注入分析:

通过子查询与按位求反,造成一个DOUBLE overflow error,并借由此注入返回数据

(4)使用场景

属于BigInt溢出型注入,用求反的方式爆出数据。

7、基于GeometryCollection()报错(混合数据类型)

(1)Payload:

GeometryCollection((select from(select from(select user())a)b))

(2)各元素作用

GeometryCollection 是零个或更多个 geometry(几何) 或 geography(地理) 实例的集合。

GeometryCollection 可以为空。

(3)GeometryCollection报错注入分析:

因为输入查询的数据并不满足Geometry或者Geography,会产报错,并借由此注入返回数据。

(4)使用场景

并不常用的报错方式可用来尝试。

8、基于polygon()报错

(1)Payload:

polygon((select from(select from(select user())a)b))

(2)各元素作用

Polygon 是存储为一系列点的二维表面,这些点定义一个外部边界环和零个或多个内部环。

(3)polygon报错注入分析:

因为输入查询的数据并不满足polygon函数储存数据的条件,会产生报错,并借由此注入返回数据。

(4)使用场景

并不常用的报错方式可用来尝试。

9、基于multipoint()报错

(1)Payload:

multipoint((select from(select from(select user())a)b))

(2)各元素作用

MultiPoint 是零个点或更多个点的集合。 MultiPoint 实例的边界为空。

(3)multipoint报错注入分析:

因为输入查询的数据并不满足multipoint函数储存数据的条件,会产生报错,并借由此注入返回数据。

(4)使用场景

并不常用的报错方式可用来尝试。

10、基于multlinestring()报错

(1)Payload:

multilinestring((select from(select from(select user())a)b))

(2)各元素作用

MultiLineString 是零个或多个 geometrygeographyLineString 实例的集合。

(3)multlinestring报错注入分析:

因为输入查询的数据并不满足函数储存数据的条件,会产生报错,并借由此注入返回数据。

(4)使用场景

并不常用的报错方式可用来尝试。

11、基于multpolygon()报错

(1)Payload:

multipolygon((select from(select from(select user())a)b))

(2)各元素作用

MultiPolygon 实例是零个或更多个 Polygon 实例的集合。

(3)multpolygon报错注入分析:

因为输入查询的数据并不满足函数储存数据的条件,会产生报错,并借由此注入返回数据。

(4)使用场景

并不常用的报错方式可用来尝试。

12、基于linestring()报错

(1)Payload:

linestring((select from(select from(select user())a)b))

(2)各元素作用

LineString 是一个一维对象,表示一系列点和连接这些点的线段。

(3)linestring报错注入分析:

因为输入查询的数据并不满足函数储存数据的条件,会产生报错,并借由此注入返回数据。

(4)使用场景

并不常用的报错方式可用来尝试。

了解更多:https://www.tr0jan.top/archives/6/
https://www.cnblogs.com/Triomphe/p/9489639.html
这两篇文章个人十分推崇

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VR科技云展如何以沉浸式体验引领科技成果新展示

一、VR科技云展的展示方式 VR科技云展通过虚拟现实技术&#xff0c;将展厅移植到虚拟空间中&#xff0c;使观众可以通过互联网在线参观展览。这种展示方式打破了时间和空间的限制&#xff0c;观众只需通过电脑、平板、手机等设备&#xff0c;就能随时随地体验展览。 1、沉浸式漫…

压缩图片最简单的方法有哪些?2024帮助你压缩出你需要的文件大小的软件

压缩图片最简单的方法有哪些&#xff1f;2024帮助你压缩出你需要的文件大小的软件 压缩图片可以帮助减少文件大小&#xff0c;从而更方便地进行存储、传输或上传到网站。以下是五款好用的图片压缩软件&#xff0c;它们能够帮助你快速、轻松地压缩图片至所需的文件大小。 万能图…

讲座在线预约管理系统的设计与实现使用SpringBootSSM框架开发

目录 摘要 1 引言 2 系统需求分析 3 技术选型 4 系统架构设计 5 核心功能实现 5.1 用户管理 5.2 讲座管理 5.3 预约管理 5.4 评论系统 6 安全性考虑 7 测试 8 结论 摘要 本文旨在设计和实现一个基于Spring Boot SSM框架的讲座在线预约管理系统&#xff0c;并结合…

makefile常见问题记录

1 Makefile:8 *** missing separator. Stop. 可能原因1&#xff1a;makefile的命令行开头必须使用Tab键 如图1所示&#xff0c;红框内为一个命令行&#xff0c;图2的缩进由敲空格实现&#xff0c;会标红&#xff0c;报错&#xff0c;图3的缩进为按Tab键&#xff0c;语法正确&…

YOLO11改进|卷积篇|引入轻量级自适应提取卷积LAE

目录 一、【LAE】卷积1.1【LAE】卷积介绍1.2【LAE】核心代码 二、添加【LAE】卷积机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【LAE】卷积 1.1【LAE】卷积介绍 下图是【LAE】卷积的结构图&#xff0c;让我们简单分析一下运行过程…

指针式表盘指针关键部位分割系统源码&数据集分享

指针式表盘指针关键部位分割系统源码&#xff06;数据集分享 [yolov8-seg-LSKNet&#xff06;yolov8-seg-C2f-EMSC等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Gl…

人工智能、人机交互和机器人国际学术会议

第三届人工智能、人机交互和机器人国际学术会议 &#xff08;AIHCIR 2024&#xff09;组委会热忱地邀请您参与本届大会。本届大会旨在聚集领先的科学家、研究人员和学者&#xff0c;共同交流和分享在人工智能、人机交互和机器人各个方面的经验和研究成果&#xff0c;为研究人员…

【千库网-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

MediaTek发布天玑9400,强芯高效带来非凡的智能体化AI体验

2024 年10月9日 – MediaTek发布旗舰5G智能体AI芯片——天玑9400&#xff0c;凭借先进的第二代全大核架构设计、强力升级的GPU和NPU处理器&#xff0c;带来一如既往强大的高智能、高性能、高能效、低功耗特性&#xff0c;在端侧AI、移动游戏及专业影像等方面实现体验跃升&#…

Docker在linux系统中的下载与使用

Docker在linux系统中的下载与使用 一、docker作用,下载及安装二、docker镜像三、创建容器四、容器数据卷 一、docker作用,下载及安装 ubuntu下载安装docker 命令&#xff1a;在ubuntu上面执行这个命令 Docker version:查看docker是否安装成功 配置阿里云镜像加速:进入阿里云网站…

无线领夹麦克风哪个牌子好?领夹麦克风品牌排行榜前十名推荐

无线领夹麦克风&#xff0c;可以说是现代音频技术发展的一个优秀成果。它挣脱了传统有线麦克风带来的种种束缚&#xff0c;让声音的传递变得更加自由灵活。不管是对音质有着极致追求的音乐发烧友&#xff0c;还是在商务场合中需要高效沟通的人士&#xff0c;无线领夹麦克风都能…

医院HIS系统,HIS系统开发带来的优势

医院HIS系统是医院信息化建设的重要组成部分&#xff0c;它可以实现对医院各项业务的集成管理和信息共享。但是在开发医院HIS系统时&#xff0c;需要注意一些关键事项&#xff0c;以保证系统的稳定性和可靠性。 首先&#xff0c;开发团队需要深入了解医院业务流程和需求&#x…

xtu oj 求和

输入格式 第一行是一个整数T(1≤T≤10000)&#xff0c;表示样例的个数。 以后每行两个整数a,b (1≤a≤b≤106) 输出格式 每行输出一个样例的结果&#xff0c;为一个整数。 样例输入 3 1 10 1 1000000 1000 2000样例输出 21 424899695954 1099654利用前缀和解题 …

二十一世纪最伟大的哲学家颜廷利:汉语山水在国学易经起名字中的强大力量

在探索国学易经的深邃智慧中&#xff0c;五行之“土”不仅象征着道德的根基&#xff0c;还以“山”的形象出现&#xff0c;与“善”同音&#xff0c;传递着善良的力量。而五行中的“水”&#xff0c;则代表着人世间的智慧流动。 二十一世纪东方中国世界上知名度最高的易学泰斗领…

AI绘画Stable Diffusion超详细教程!从零基础入门到进阶实战教程!

前言 一、本地部署 Stable Diffusion &#xff08;全套教程文末领取哈&#xff09; 前言 目前市面上比较权威&#xff0c;并能用于工作中的AI绘画软件其实就两款。一个叫Midjourney&#xff08;简称MJ&#xff09;&#xff0c;另一个叫Stable-Diffusion&#xff08;简称SD&a…

python22_replace替换

replace替换 a helloworlddef replace(s, old, new):return new.join(s.split(old))def replace_other(s, number):return s.replace(a[number], m)if __name__ "__main__":print(f"输出结果为{replace(a, hello, world)}")print(f"输出结果为{rep…

MySQL调优、索引是什么、如何创建索引、索引的作用、索引失效场景

索引 索引是一种数据结构。用于加快对数据库的查询速度以及性能。 MySQL 索引类似于书籍的索引&#xff0c;通过存储指向数据行的指针&#xff0c;可以快速定位和访问表中的特定数据。 打个比方&#xff0c;如果合理的设计且使用索引的 MySQL 是一辆兰博基尼的话&#xff0c;那…

Kubernetes----基础命令合集

目录 一、命令概述 1.1命令分类 1.2 基本语法 二、查看基本信息 2.1 环境指令 2.1.1 查看版本信息 2.1.2 查看资源对象简写 2.1.3 添加补全信息 2.1.4 查看日志 2.1.5 查看集群信息 2.2 查看资源信息 2.2.1 获取资源相关信息 ① 查看集群组件状态 ② 查看命名空间…

Linux入门3——vim的简单使用

1.vim 1.1 vim的模式 vim有三种主要模式&#xff1a; ①命令模式&#xff1a;使用vim刚打开进入的模式就是命令模式&#xff1b; ②插入模式&#xff1a;只有在插入模式下才可以做文字输入&#xff0c;按[Esc]键可退回命令模式&#xff1b; ③末行模式&#xff1a;文件保存或退…

【Java】并发革命:线程池

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持&#xff01; 在当今软件开发领域&#xff0c;多线程编程已成为提升应用性能的核心技术。随着业务需求的增长&#xff0c;线程的频繁创建和销毁不仅增加了系统的开销&#xff0c;也影响了程序的运行效率。 尽管线…