SQL注入中information_schema的作用

实验简介

实验所属系列:WEB安全应用

实验对象:WEB安全爱好者

相关课程及专业:渗透测试技术

实验时数:1小时

实验类别:实践实验类

预备知识

MySQL语法:https://dev.mysql.com/doc/refman/5.7/en/select.html

MySQL查询数据:http://www.runoob.com/mysql/mysql-select-query.html

实验目的

通过本次实验,掌握SQL注入中,通过information_schema这个数据库爆库名、表名以及字段名的原理。

实验环境

windows 7、安装wamp环境。

实验内容与步骤 在phpmyadmin中,在左侧点击information_schema数据库。可以查看此数据库中所有的表。

SQL注入中information_schema的作用 

执行   show tables;  语句来查看该库中的所有表: 

 SQL注入中information_schema的作用

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

 SQL注入中information_schema的作用

 执行show databases;的时候,可以看到存在的数据库

 SQL注入中information_schema的作用

 进入mysql终端,由于root的密码为空,直接回车即可。 进入information_schema 数据库,命令为:use information_schema; 。(注意后面记得加分号)

 SQL注入中information_schema的作用

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

 SQL注入中information_schema的作用

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

 SQL注入中information_schema的作用

 查看有多少条记录,执行select count(*) from tables; 。查询任意一条记录查看,在此选择的为最后一条记录,SQL语句为:select * from tables limit 141,1\G。(\G,会让一条记录显示一行。但只支持在客户端中使用)

 SQL注入中information_schema的作用

 查看sqli数据库中的表,SQL语句为:show tables from sqli;。若想要通过information_schema数据库来查询sqli数据库中所有的表,那么就可以使用如下SQL语句:

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

 SQL注入中information_schema的作用

 查看COLUMNS表结构。(此表保存了整个数据中,所有的列名)

 SQL注入中information_schema的作用

 确定该表有多少条记录,执行select count(*) from columns;我们获取最后一条记录,执行select * from columns limit 1661,1\G

 SQL注入中information_schema的作用

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

SQL注入中information_schema的作用

分析与思考

为什么网上的SQL注入语句中,数据库名都是用的字符的16进制值? 可以避免引号绕过等,方便查找  

 课后习题

SQL注入中information_schema的作用

 

上一篇:什么是数据湖 Data Lake


下一篇:PostgreSQL 13 新建数据库、用户及配置