实验所属系列: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数据库。可以查看此数据库中所有的表。
执行 show tables; 语句来查看该库中的所有表:
想要查看数据库的数据保存目录,可以执行select @@datadir
执行show databases;的时候,可以看到存在的数据库
进入mysql终端,由于root的密码为空,直接回车即可。 进入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';
查看COLUMNS表结构。(此表保存了整个数据中,所有的列名)
确定该表有多少条记录,执行select count(*) from columns;我们获取最后一条记录,执行select * from columns limit 1661,1\G
查看sqli的user表是否存在该字段,执行SQL语句:show columns from sqli.user;
分析与思考
为什么网上的SQL注入语句中,数据库名都是用的字符的16进制值? 可以避免引号绕过等,方便查找课后习题