C/C++教程

SQL注入中information_schema的作用

本文主要是介绍SQL注入中information_schema的作用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  information_schema数据库是MySQL自带的,MySQL 5以下没有这个数据库,它提供了访问数据库元数据的方式。元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。也就是说information_schema中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。

在phpmyadmin中,在左侧点击information_schema数据库。

执行如下SQL语句来查看该库中的所有表:

      show tables;

 

 

  想要查看数据库的数据保存目录,可以执行select @@datadir

在数据库中执行show databases;的时候,可以看到存在5个数据库,正是少了information_schema这个数据库。

 

 进入mysql终端

进入information_schema 数据库,命令为:use information_schema; 

 

 执行show databases;查看所有的数据库,然后再执行select schema_name from schemata;。

 

    desc 可以用来看表结构。看下tables的表结构,执行desc tables;

在查询前,先看看有多少条记录,避免记录太多查看不方便,执行select count(*) from tables; 

 

 选择最后一条记录,SQL语句为:select * from tables limit 141,1\G由于在客户端中,默认查询结果显示不友好,所以,可以把语句后面的分号改成\G,他会让一条记录显示一行

 查看sqli数据库中的表,SQL语句为:show tables from sqli;

 

通过information_schema数据库来查询sqli数据库中所有的表,那么就可以使用如下SQL语句:

      select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = 'sqli';

 

 获取最后一条记录,执行select * from columns limit 1661,1\G

 

  查看sqli的user表是否存在该字段,执行SQL语句:show columns from sqli.user;

要通过information_schema数据库的columns表查询sqli数据库中user表中所有的字段,可以执行如下SQL语句:   

select column_name from information_schema.columns where TABLE_SCHEMA='sqli' and TABLE_NAME='user';

   查询结果与show columns from sqli.user; 一致。

 

为什么网上的SQL注入语句中,数据库名都是用的字符的16进制值?

十六进制的SQL语句可以突破很多防火墙和防注入程序

 

 

 

这篇关于SQL注入中information_schema的作用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!