确认网站存在SQL注入时,可以对其进行脱库,即获取数据库表中的内容,比如用户的敏感信息
注意 : MySQL5.0以后 才有information_schema这个默认数据库
一库三表六字段
MySQL数据库中有一个默认数据库 information_schema
这个数据库中有三张特殊的表
schemata表 , 存储了所有数据库的名字 tables表 , 存储了所有表的名字 columns表 , 存储了所有字段的名字 这三张特殊的表中有六个敏感字段
schemata表的 schema_name字段 , 存储数据库名 tables表的 table_name字段 , 存储表名 tables表的 table_schema字段 , 存储表所在的数据库 columns表的 column_name字段 , 存储字段名 columns表的 table_name字段 , 存储字段所在的表 columns表的 table_schema字段 , 存储字段所在的数据库
脱库的步骤
具体的SQL需要根据注入类型进行动态变化
查询 information_schema数据库的 schemata表 的 schema_name字段 , 获取所有数据库
代码语言:javascript复制select schema_name
from information_schema.schemata;
查询 information_schema数据库的 tables表的 table_name字段 , 获取所有表(指定数据库)
代码语言:javascript复制select table_name
from information_schema.tables
where table_schema='security' limit 1,1
查询 information_schema数据库的 columns表的 column_name字段 , 获取所有字段(指定表)
代码语言:javascript复制select column_name
from information_schema.columns
where table_schema='security'
and table_name='users' limit 1,1
调整 limit 展示不同的分页 , 从而获取到不同的数据 ,获取到所有表和字段以后 , 即可获取表中的数据
代码语言:javascript复制select username from security.users limit 1,1;