SQL注入即是指WEB应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
WEB应用程序三层架构:视图层+业务逻辑层+数据访问层
SQL注入之MySQL数据库
数据库服务器层级关系:
服务器里面
:多个数据库
:多个数据表
:多个列、行、字段
:最后拿到的才是我们想要的数据
系统库释义
提供了访问数据库元数据的方式。
information_schema 信息模式数据库,提供对数据库元数据的访问,符合 SQL 标准。
performance_schema 性能模式,用于监控 MySQL 服务器运行时的性能数据。
mysql MySQL 系统数据库,存储用户权限、插件、时区等系统信息。
sys 系统数据库,基于 performance_schema 和 information_schema 提供更易读的性能视图。
基本的查询语句
show databases; 查看所有数据库
use 数据库名; 进入\选择数据库
show tables; 查看当前数据库的所有表
select * from 表名; 查看某个表的所有数据
select * from users; 查看users表里的所有数据
条件查询(where)
select * from users where id=2;
利用union联合查询,拼接在一起查询,可以一条语句,查多个结果
select * from users where id=2 union select * from users where pass = 111;
select * from users where id=1 or pass = 111; 都行
select * from users where id=1 || pass = 111; 也行
select * from users where id=1 && pass = 123456;
联合查询(多个语句查询)
1、前后相互独立,前面查询的语句和后面的查询语句,结果互不干扰!
2、前面的查询语句的字段数量 和 后面的查询语句的数量要保持一致
但是首行的字段名,是第一个的字段名
不能前面2个,后面3个
order by(排序)
select * from users order by id; 默认是降序(desc),asc(升序)
作用是猜解表的字段/列数
select * from users order by 可以写1、2、3、4、...;
order by 后面的数字是表的字段数,第几列
当order by 1没有报错说明有1个字段
当order by 2报错说明没有2个字段
这样就可以知道表中有多少个字段
系统数据库
默认是数据库系统自带的
高版本自带系统库,而5.0以下的版本不带系统库
在MySQL5.5才开始新增一个数据库
information_schema
共有61张表,其中三张表
1.schemata:保存当前MySQL整个服务器所有的的数据库信息,库名
2.tables:保存当前整个服务器所有的数据表的信息 表名
3.columns:保存当前整个服务器所有的字段的信息 列名
常用参数
tables 表
table_name 表名
columns 列
column_name 列名
scheam_name 库名
schemata