floor报错注入原理_sql报错注入

floor报错注入原理_sql报错注入floor()报错注入准确地说应该是floor,count,groupby冲突报错是当这三个函数在特定情况一起使用产生的错误。首先看经典的floor注入语句:andselect1from(selectcount(*),concat(database(),floor(rand(0)*2))xfrominformation_schema.tablesgroupbyx)a)第一眼看…

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

Jetbrains全系列IDE稳定放心使用

floor()报错注入准确地说应该是floor,count,group by冲突报错

是当这三个函数在特定情况一起使用产生的错误。

首先看经典的floor注入语句:

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

第一眼看起来有些懵逼,我们来从最基本的入手,最后在分析这个语句

首先是floor()报错产生的条件:

select count(*) ,floor(rand(0)*2)x from security.users group by x(自定义数据库的一张表)

这里解释一下x是什么意思,可能有些同学不太熟悉sql语句,floor(rand(0)*2)x的x是为floor(rand(0)*2)添加了一个别名,就是x就等于floor(rand(0)*2),这样做的目的是

让group by 和 floor(rand(0)*2)相遇(请原谅我这么解释),

具体原理这里不再分析,最后会附上几个原理解释链接。

先看直接执行效果:

floor报错注入原理_sql报错注入

这里报的Duplocate entry错误就是我们想要的,报错的位置是在floor(rand(0)*2),关于那个 1 是由报错原理决定的,毕竟我们还没有写入任何我们想要的子查询,关于1出现的原因具体可以研究下原理。

下一步我们在报错位置处加上我们想要的子查询,用concat()拼接:

select count(*) ,concat(database(),floor(rand(0)*2))x from security.users group by x

floor报错注入原理_sql报错注入

security就是我们想要的数据库名,1是上一步拼接的。

但现在是不是就可以直接使用了呢?还有几个步骤,先看直接拼接到and 后会怎样:

select * from security.users where id=1 and (select count(*) ,concat(database(),floor(rand(0)*2)x) from security.users group by x)

floor报错注入原理_sql报错注入

报了一个错,百度一番发现引发这个错误的原因很多,这里我是觉得我们构建的select语句的结果是一个结果表,而and 需要一个布尔值,也就是0或非零的值,那我们在嵌套一个查询,前面说了select 的结果是一个结果表,那我们就可再从这个表执行查询,这不过这次select的值是非零数字:

select 1 from (select count(*) ,concat(database(),floor(rand(0)*2))x from security.users group by x)a

再啰嗦一句,最后这个a和之前解释的x的作用是一样的,是前面括号内容的别名,

sql语句要求在查询结果的基础上再执行查询时,必须给定一个别名。

嵌套进and后执行

select * from security.users where id=1 and(select 1 from (select count(*) ,concat(database(),floor(rand(0)*2))x from security.users group by x)a)

floor报错注入原理_sql报错注入

大功告成

我们完成了刚开始引入的floo()注入语句

 

几个fool()原理解释:

https://www.cnblogs.com/xdans/p/5412468.html

https://www.cnblogs.com/litlife/p/8472323.html

http://www.cnblogs.com/xishaonian/p/6227405.html

 转载指明出处

文章同步到我的博客:http://119.23.249.120/archives/276

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

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

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


相关推荐

  • R语言入门-安装R和Rstuido软件

    R语言入门-安装R和Rstuido软件安装R和Rstuido软件R语言是用于统计分析,图形表示和报告的编程语言和软件环境;Rstudio是编辑、运行R语言的最为理想的工具之一。1、官网下载R安装包  下载地址为:https://cran.r-project.org  进入链接,如下图所示,在页面顶部提供了三个下载链接,分别对应三种操作系统:Windows、Mac和Linux。请选择自己操作系统对应的链接,接下来我将以wi…

    2022年6月27日
    46
  • 磁盘阵列的组建及维护技巧(图)

    磁盘阵列的组建及维护技巧(图)

    2021年8月9日
    64
  • Win10 IIS Web服务器安装与配置

    Win10 IIS Web服务器安装与配置这几天课程实训,使用IIS配置服务器,课本上内容太久,老师也没有讲过,自己摸索了一下,所以记录一下安装IIS打开程序和功能,选择左边启用或关闭Windows功能,建议根据下图勾选,确定后等待安装完成打开IIS直接使用Cortana搜索管理工具,打开选择InternetinformationServices(IIS)管理器点击左边栏,在计算机名下,网站文件夹下已经默认存

    2022年5月30日
    41
  • 后台 管理 系统

    后台 管理 系统课程/视频管理系统:https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb1nO3pa&ft=t&id=643539140484教务管理系统:https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb1nO3pa&ft=t&id=643539140484成绩管理系统:https://item.taobao.com/item.h

    2022年4月25日
    42
  • Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

    Unix/Linux环境C编程新手教程(12) openSUSECCPP以及Linux内核驱动开发环境搭建

    2022年2月3日
    50
  • Ubuntu17.04配置SSH服务[通俗易懂]

    Ubuntu17.04配置SSH服务[通俗易懂]ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全,现在介绍一下如何在Ubuntu17.04上安装和配置ssh.方法和步骤一、配置ssh服务1、更新源列表打开”终端窗口”terminal,输入”sudoapt-getupdate”–>回车–>”输入当前登录用户的管理员密码”–>回车,就可以了。更新可能需要等待一两分钟。…

    2022年9月2日
    3

发表回复

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

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