确认网站存在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字段 , 获取所有数据库
select schema_name from information_schema.schemata;
查询 information_schema数据库的 tables表的 table_name字段 , 获取所有表(指定数据库)
select table_name from information_schema.tables where table_schema='security' limit 1,1
查询 information_schema数据库的 columns表的 column_name字段 , 获取所有字段(指定表)
select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1
调整 limit 展示不同的分页 , 从而获取到不同的数据 ,获取到所有表和字段以后 , 即可获取表中的数据
select username from security.users limit 1,1;