报错注入常见函数原理

floor函数

select count(*),(floor(rand(0)*2))x from table group by x;

select查询语句
group by进行分组(相同为一组)
rand()生成0到1的随机数
floor()返回整数
count()对数据整合(类似去重)

产生原因:mysql在执行该语句会建立一个虚拟表,表中有两个字段(一个是分组的值和一个计数的值),当分组已经存在后就会爆错。

参考:http://www.cnblogs.com/sfriend/p/11365999.html

extractvalue函数

限制长度为32位

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

该参数接受两个字符串参数,一个xml标记片段和一个xpath表达式,而第二参数要求xpath格式字符串,而我们不是所以报错。

参考:https://www.cnblogs.com/xishaonian/p/6250444.html

updatexml函数

限制长度为32位

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

updatexml(1,2,3)第一个参数是string格式,为xml文档对象的名称,第二个参数为xpath格式的字符串,第三个string格式,替换查找到的符合条件的数据,由于第二个参数要xpath格式的字符串,因为不符合规则所以报错。

参考:http://blog.csdn.net/qq_37873738/article/details/88042610

name_const函数

只可获取数据库的版本信息

exp函数

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

exp(int)该函数会返回值得x次方结果,当值超过mysql的范围就会爆错,上面payload的意思为:先查询user()的数据取名为a再select * from a将结果集a全部查询出来。

报错函数:
floor()
extractvalue()
updatexml()
name_const()
join()
exp()
geometry collection()
polygon()
multipoint()
multlinestring()
multpolygon()
linestring()
参考:http://www.mamicode.com/info-detail-2366760.html

猜你喜欢

转载自blog.csdn.net/p_utao/article/details/109491771