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

SQL注入:报错注入

SQL注入系列文章:
初识SQL注入-CSDN博客

SQL注入:联合查询的三个绕过技巧-CSDN博客

目录

什么是报错注入?

报错注入常用的3个函数

UpdateXML

ExtractValue

Floor

rand(随机数)

floor(向上取整)

count(统计)

group by(分组)


前面两篇和大家分享了SQL注入的基本知识和用法,还有联合查询的三个常用技巧。

那么在本篇中,我会和大家通过复习+练习的形式一起学习一下SQL注入中的报错注入,那么花不多少,我们开始ヾ(◍°∇°◍)ノ゙

什么是报错注入?

在SQL注入的过程中,如果网站的web服务器开启了错误回显,则会被攻击者提供极大的便利

比如说我们可以在sqli-labs的第一关中,闭合'但是不注释后面的其他数据,则前端页面就会直接报错且将报错信息直接展现在页面中

还有就是部分数据库执行出错时hiatus将参数内容添加到错误信息中,如UpdateXML、ExtractValue等函数的第二个参数必须是Xpath格式,当其格式非法时,错误信息中会包含参数的内容,这样我们就可以将需要获取的信息从错误信息中显示出来

报错注入常用的3个函数

  • extractvalue
  • updatexml
  • floor

那么下面就分别使用这三个函数来演示一下SQL的报错注入

UpdateXML

根据Mysql官网的介绍,UpdateXML和ExtractValue这两个都是XML函数,具体的描述如下:

姓名描述
ExtractValue()使用 XPath 表示法从 XML 字符串中提取值
UpdateXML()返回替换的 XML 片段

错误处理。 对于ExtractValue()和 UpdateXML(),使用的 XPath 定位器必须有效,并且要搜索的 XML 必须包含正确嵌套和闭合的元素。如果定位器无效,则会生成错误

传参格式:UpdateXML(xml_target, xpath_expr, new_xml)

xml_target此函数用新的 XML 片段 替换给定 XML 标记片段的单个部分new_xml,然后返回更改后的 XML。被替换的部分 xml_target匹配用户提供的 XPath 表达式xpath_expr 。

这里不需要懂得它的每个参数的具体含义,只需要知道它需要传入三个参数参数即可

从上面的介绍可以看出,UpdateXML函数的xpath,也就是第二个参数,必须要符合规范,否则就会报错,那么就可以利用这一点来进行报错注入:

我们来在sqli-labs的第一关尝试一下

payload:

?id=1%27 and updatexml(1,concat(0x7e,(select user()),0x7e),1)   --+

从报错信息中可以看到显示XPATH的语法错误了,然后后面就是我们注入出的数据库额度用户名

这里我们能够注入成功的原因就是将updatexml的第二个参数传入了一个不符合规范的值,因此就会产生报错,然后我们利用报错,来注入出了用户名

然后我们就可以利用这样的方式再注入出数据库名

有了数据库名称,我们就可以利用information_schema数据库来依次注入出表名,列名,最后注入出具体的数据 

ExtractValue

传参格式:ExtractValue(xml_frag, xpath_expr)

ExtractValue()采用两个字符串参数,一个 XML 标记片段 xml_frag和一个 XPath 表达式 xpath_expr(也称为 定位器);它返回CDATA第一个文本节点的文本 ( ),该文本节点是与 XPath 表达式匹配的一个或多个元素的子元素。

这里同样不需要懂得它的每个参数的具体含义,只需要知道它需要传入两个参数即可

从上面的介绍可以看出,ExtractValue函数的xpath,也就是第二个参数,必须要符合规范,否则就会报错,那么就可以利用这一点来进行报错注入:

这里还是在sqli-labs在第一关进行测试一下:

这里的payload就是与ExtractValue不同的就是少了一个参数,但也是在第二个参数中进行查询

?id=1' and extractvalue(1,concat(0x7e,(select user()),0x7e))--+

当然也可以通过同样的方式查询出数据库的名称:

 后面的就不用再说了,直接注入其他数据即可

Floor

最后一个就是floor函数了

主要的利用语句是 select count(),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor(rand(0)*2)函数,实现将注入结果与报错信息回显的注入方式。

这里可以看到利用floor函数进行报错注入会使用几个别的关键字,这里先分别介绍一下:

rand(随机数)

rand() 可以产生一个在0和1之间的随机数。

我们可以在mysql中看一下:

可以看到rand()函数每次都会生成一个<1的随机小数

但是当我们给rand()函数传入一个参数后,那么它的值就会变成固定的了

floor(向上取整)

那么再来看看floor函数,floor() 函数的作用就是返回小于等于括号内该值的最大整数。

在mysql中简单使用一下:

从结果中可以看出,确实如定义的那样,取最小的整数,那么将它和rand()函数配合起来在数据库中使用会有什么效果呢?

可以看到结果全是0,如果换成floor(rand(0)*2)应该就是产生的数就是返回 0 到 2 之间的随机数,再配合 floor() 就可以产生确定的两个数了。也就是 0 和 1: 。试试看:

可以看到这样果然就变得有的只有0和1了

count(统计)

count函数的作用统计结果的记录数。

比如我们需要知道users表中一共有多少条记录,就可以使用count来统计一下

group by(分组)

那么再来看那可能group by,它就是mysql的一个用于分组的函数,直接举一个例子来演示一下:
现在基于password来进行一个分组:

可以看到一共有18条记录

几个函数都已经介绍完了,那么最后再来看一下我们的payload是怎么来的吧:

既然是报错注入,首先就需要先进行报错:

这个报错的意思就是它说group_key的主键重复了

根据前面函数,这句话就是统计后面产生随机数的种类并计算每种数量。

分别产生0 1 1 0 1 1... ,这样0是7个,1是11个,但是最后却产生了报错。

下面分析一下报错的原因:

这个整合然后计数的过程中,中间发生了什么我们是必须要明白的。 首先mysql遇到该语句时会建立一个虚拟表。该虚拟表有两个字段,一个是分组的 key ,一个是计数值 count()。也就对应于实验中的 user_name 和 count()。

然后在查询数据的时候,首先查看该虚拟表中是否存在该分组,如果存在那么计数值加1,不存在则新建该分组。

然后mysql官方有给过提示,就是查询的时候如果使用rand()的话,该值会被计算多次,那这个"被计算多次"到底是什么意思,就是在使用group by的时候,floor(rand(0)*2)会被执行一次,如果虚表不存在记录,插入虚表的时候会再被执行一次,我们来看下floor(rand(0)2)报错的过程就知道了,从上面的函数使用中可以看到在一次多记录的查询过程中floor(rand(0)2)的值是定性的,为011011 (这个顺序很重要),报错实际上就是floor(rand(0)2)被计算多次导致的。

到此,三种常见的报错注入函数和报错注入就介绍和演示完毕了,后面的文章还会和大家分享更多的关于SQL注入的技巧和实验(^▽^)

相关文章:

SQL注入:报错注入

SQL注入系列文章&#xff1a;初识SQL注入-CSDN博客 SQL注入&#xff1a;联合查询的三个绕过技巧-CSDN博客 目录 什么是报错注入&#xff1f; 报错注入常用的3个函数 UpdateXML ExtractValue Floor rand&#xff08;随机数&#xff09; floor&#xff08;向上取整&…...

K8s 安装部署-Master和Minion(Node)文档

K8s 安装部署-Master和Minion(Node)文档 操作系统版本&#xff1a;CentOS 7.4 Master &#xff1a;172.20.26.167 Minion-1&#xff1a;172.20.26.198 Minion-2&#xff1a;172.20.26.210&#xff08;后增加节点&#xff09; ETCD&#xff1a;172.20.27.218 先安装部署ETC…...

OpenAI 降低价格并修复拒绝工作的“懒惰”GPT-4,另外ChatGPT 新增了两个小功能

OpenAI降低了GPT-3.5 Turbo模型的API访问价格&#xff0c;输入和输出价格分别降低了50%和25%。这对于使用API进行文本密集型应用程序的用户来说是一个好消息。 OpenAI官网&#xff1a;OpenAI AIGC专区&#xff1a;aigc 教程专区&#xff1a;AI绘画&#xff0c;AI视频&#x…...

springboot+value静态属性获取配置文件中的值的操作方法

1.配置类需要让spring管理 2.set方法不要加static 3.如果静态属性是private修饰&#xff0c;则在使用的时候&#xff0c;需要 类名.getXXX方法 如果静态属性是public修饰&#xff0c;则在使用的时候&#xff0c;需要 类名.属性名 import org.springframework.beans.factory.an…...

Prometheus 架构全面解析

在本指南中&#xff0c;我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统&#xff0c;能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标&#xff0c;并根据阈值收到警报。 此外&#xff0c;在当今世界&#xff0c;可观…...

把批量M3U8网络视频地址转为MP4视频

在数字媒体时代&#xff0c;视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说&#xff0c;将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是&#xff0c;现在有了固乔剪辑助手这款强大的工具&#xff0c;这一过程变得异常简单。下面…...

联合 Maxlinear 迈凌 与 Elitestek 易灵思 - WPI 世平推出基于 FPGA 芯片的好用高效电源解决方案

近期 WPI 世平公司联合 Maxlinear 迈凌电源产品搭配 Elitestek 易灵思 FPGA 共同合作推出基于 FPGA 芯片的好用高效电源解决方案。 Elitestek 易灵思 FPGA 核心产品有 2 大系列 : Trion 系列与钛金系列。Trion 系列主要特点是 : 1. 40nm 工艺 2. 超低功耗 ( 可低至竞争对手的 …...

Keycloak - docker 运行 前端集成

Keycloak - docker 运行 & 前端集成 这里的记录主要是跟我们的项目相关的一些本地运行/测试&#xff0c;云端用的 keycloak 版本不一样&#xff0c;不过本地我能找到的最简单的配置是这样的 docker 配置 & 运行 keycloak keycloak 有官方(Red Hat Inc.)的镜像&#…...

架构篇27:如何设计计算高可用架构?

文章目录 主备主从集群小结计算高可用的主要设计目标是:当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可…...

Python 有用的库模块

简介 Python中有许多常用的库或者模块&#xff0c;在写代码的时候或多或少会遇到&#xff0c;本文对其进行总结&#xff0c;方便日后查阅。 pprint Python中的pprint模块是用于打印数据结构&#xff08;如字典&#xff0c;列表等&#xff09;的模块&#xff0c;提供了一种以…...

vivado DDS学习

实现DDS通常有两种方式&#xff0c;一种是读取ROM存放的正弦/余弦信号的查表法&#xff0c;另一种是用DDS IP核。这篇学习笔记中&#xff0c;我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT&#xff08;DDS&#xff09;的standard模式…...

微信小程序(十六)slot插槽

注释很详细&#xff0c;直接上代码 上一篇 温馨提醒&#xff1a;此篇需要自定义组件的基础&#xff0c;如果不清楚请先看上一篇 新增内容&#xff1a; 1.单个插槽 2.多个插槽 单个插糟 源码&#xff1a; myNav.wxml <view class"navigationBar custom-class">…...

gtest 单元测试

文章目录 前言一、Google Test介绍1.1 gtest源码下载编译1.2 常用API介绍1.3 gtest运行参数介绍 二、Google Mock参考资料 前言 Google Test&#xff08;简称gtest&#xff09;是一个开源的C单元测试框架。和常见的测试工具一样&#xff0c;gtest提供了单体测试常见的工具和组…...

掌握assert的使用:断言在错误检查和调试中不可或缺

断言在错误检查和调试中不可或缺 一、简介二、断言的基本语法和用法三、错误检查与断言四、 调试与断言五、避免滥用断言六、总结 一、简介 断言是一种在程序中用于检查特定条件是否满足的工具。一般用于验证开发者的假设&#xff0c;如果条件不成立&#xff0c;就会导致程序报…...

概念杂记--到底啥是啥?(数据库篇)

文章目录 1.聚集索引&#xff08;clustered index&#xff09;2.非聚集索引&#xff08;Non-clustered index&#xff09;3.聚集索引和非聚集索引区别&#xff1f;4.覆盖索引&#xff08;covering index&#xff09;5、复合索引 &#xff08;Composite Index&#xff09;6.索引…...

Ubuntu20.4 Mono C# gtk 编程习练笔记(四)

连续实时绘图 图看上去不是很清晰&#xff0c;KAZAM录屏AVI尺寸80MB&#xff0c; 转换成gif后10MB, 按CSDN对GIF要求&#xff0c;把它剪裁缩小压缩成了上面的GIF&#xff0c;图像质量大不如原屏AVI&#xff0c;但应该能说明原意&#xff1a;随机数据随时间绘制在 gtk 的 drawin…...

1 月 26日算法练习

文章目录 九宫幻方穿越雷区走迷宫 九宫幻方 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分&#xff0c;三阶幻方指的是将1~9不重复的填入一个33的矩阵当中&#xff0c;使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称…...

今日AI大热潮,明日智能风向标

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

03 SB实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)

1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址&#xff1a;portal/findAllTypes 请求方式&#xff1a;get 请求参数&#xff1a;无 响应数据&#xff1a; 成功 {"code":"200","mes…...

Abaqus许可分析工具

在当今的知识产权保护和许可管理领域&#xff0c;一款高效、精准的许可分析工具对于企业来说至关重要。Abaqus许可分析工具凭借其强大的功能和卓越的性能&#xff0c;成为了企业优化知识产权许可管理的得力助手。 一、Abaqus许可分析工具的核心优势 1.全面性&#xff1a;Abaqus…...

【开发工具】从eclipse到idea的过度

背景 随着eclipse相比以前性能慢了不少&#xff0c;idea在开发工具领域越战越猛&#xff0c;市场份额也逐年增加&#xff0c;其体验得了软件工程师的热爱。 概要 本文只是做了一个简要的记录&#xff0c;简单描述下本人从eclipse到idea的过度的心态。 正文 在大厂都会研发自…...

【QT+QGIS跨平台编译】之十一:【libzip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libzip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libzip介绍 libzip是一个开源C库,用于读取,创建和修改zip文件。 libzip可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件。在不关闭存档的情况下所做的更改可以还原…...

openlayers+vue实现缓冲区

文章目录 前言一、准备二、初始化地图1、创建一个地图容器2、引入必须的类库3、地图初始化4、给地图增加底图 三、创建缓冲区1、引入需要的工具类库2、绘制方法 四、完整代码总结 前言 缓冲区是地理空间目标的一种影响范围或服务范围,是对选中的一组或一类地图要素(点、线或面…...

(大众金融)SQL server面试题(3)-客户已用额度总和

今天&#xff0c;面试了一家公司&#xff0c;什么也不说先来三道面试题做做&#xff0c;第三题。 那么&#xff0c;我们就开始做题吧&#xff0c;谁叫我们是打工人呢。 题目是这样的&#xff1a; DEALER_INFO经销商授信协议号码经销商名称经销商证件号注册地址员工人数信息维…...

c语言笔记

1. c语言部分算法列举 1.1 找数 二分查找&#xff08;前提是数据必须有序&#xff09; 1.2 求极值 1.3 数组逆序 1.4 排序法&#xff08;***重点***&#xff09; 1.4.1 选择排序法 1.4.2 冒泡排序法 1.4.3 插入排序法 2. 字符型数组 2.1 使用格式 char s[10]; …...

6轴机器人运动正解-逆解控制【1】——三种控制位姿的方式

概览&#xff1a; 通过运动学正解控制机器人运动通过运动学逆解控制机器人运动一个简单的物体搬运&#xff08;沿轨迹运动&#xff09; 后续会陆续更新&#xff08;本例仅供学习交流用&#xff09; 一、6轴机器人 二、运动正解控制 通过修改各个轴的角度&#xff0c;实现末…...

c# Microsoft UI Automation

Microsoft UI Automation&#xff08;UIA&#xff09;是一种用于自动化Windows应用程序用户界面&#xff08;UI&#xff09;的框架。它允许开发人员编写自动化测试脚本、辅助技术应用程序和其他需要与应用程序交互的工具。以下是一些关于Microsoft UI Automation的重要信息&…...

C#-前后端分离连接mysql数据库封装接口

C#是世界上最好的语言 新建项目 如下图所示选择框红的项目 然后新建 文件夹 Common 并新建类文件 名字任意 文件内容如下 因为要连接的是mysql数据库 所以需要安装 MySql.Data.MySqlClient 依赖; using MySql.Data.MySqlClient; using System.Data;namespace WebApplication1.…...

yolov8 opencv dnn部署自己的模型

源码地址 本人使用的opencv c github代码,代码作者非本人 使用github源码结合自己导出的onnx模型推理自己的视频 推理条件 windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv4.7.0 (opencv4.5.5在别的地方看到不支持yolov8的推理&#xff0c;所以只使用opencv…...

插槽(64-67)

文章目录 插槽1.插槽 - 默认插槽(组件内可以定制一处结构)2.插槽 - 后备内容&#xff08;默认值&#xff09;3.插槽 - 具名插槽(组件内可以定制多处结构)4.作用域插槽(插槽的一个传参语法) 插槽 插槽分类:默认插槽和具名插槽 1.插槽 - 默认插槽(组件内可以定制一处结构) 作用…...

西安网站群公司/广告大全

需求&#xff1a;混合应用UIWebView打开html后&#xff0c;UIWebView有左右滚动条&#xff0c;要去掉左右滚动效果&#xff1b; 方法&#xff1a;通过js截获UIWebView中的html&#xff0c;然后修改html标签内容&#xff1b; 实例代码&#xff1a; 服务器端html Java代码<htm…...

音乐设计网站推荐/免费网站推广优化

deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统&#xff0c;和那些 Ubuntu&#xff08;下个大版本是基于debian开发) 的衍生版仅仅只是换主题、调整ISO预置的软件包不同。Linux Deepin 在大量吸纳 Debian/Ubuntu 仓库的软件包之外&#xff0c;构建了更大的 Deep…...

成都集团网站建设/优化设计答案六年级上册

使用PHPMySqlAjaxjQuery实现省市区三级联动功能要求&#xff1a;写一个省市区(或者年月日)的三级联动&#xff0c;实现地区或时间的下拉选择。实现技术&#xff1a;php ajax实现&#xff1a;省级下拉变化时市下拉区下拉跟着变化&#xff0c;市级下拉变化时区下拉跟着变化。使用…...

南头专业企业网站建设公司/网络营销的8个基本职能

在开发的 过程中如果使用API可以节省很多时间。而且幸运的是Flash Platform Community一直乐意来共享这些资源。这34个AS3 API将被使用在Flex&#xff0c;Flash和AIR开发中。希望这些API包括我之前发布的API版本能帮助你和你的团队来节省时间。ArcGIS API for FlexArcGIS API …...

朝阳网站建设 国展/网络推广seo怎么做

目录 题目 思路 考点 Code 题目 公司用一个字符串来表示员工的出勤信息 absent:缺勤 late:迟到 leaveearly:早退 present:正常上班 现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下: 缺勤不超过一次; 没有连续的迟到/早退; 任意连续7次考勤…...

网站建设目的/免费招聘信息发布平台

开始最好是去大公司&#xff0c;趁年轻多学点技术。 贝瑞和康招聘 - 生物信息工程师 生物信息软件工程师 - 博奥生物集团有限公司 医学检测生物信息工程师[只招应.. 生物信息工程师-北京 安诺优达基因科技&#xff08;北京&#xff09;有限公司 生物信息研发工程师-ctDNA方向 北…...