【5】web安全入门篇-MYSQL数据库

0x01 mysql介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
一般与PHP搭配,运行在Apache服务器上

0x02 mysql结构

在这里插入图片描述

0x03 mysql常规操作

1. 创建

1.1 创建数据库

create database 数据库名;

在这里插入图片描述
在这里插入图片描述
可以看到数据库已经创建成功。在这里出来我创建的数据库还有几个mysql自带的数据库,分别是information_schema,mysql,performance_schema
information_schema:information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式,如能在这个数据库里面查询mysql中的数据库名,表名,字段名,外键关系等(该表在mysql5.0以下的版本是不存在的)
mysql:主要用于mysql数据库用户名,密码,权限等的管理,如可以在该数据库里面更改密码,更改用户权限等
performance_schema:mysql 5.5 版本 新增了一个性能优化的引擎,该功能默认关闭的。

1.2 创建表

create table 表明(
字段名 数据类型 附加信息
)表附加信息;

create table test(
id int primary key auto_increment not null,
csdn varchar(255) default null
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

这里的例子,创建一个表名为test,里面有两个字段ID和csdn,id是整型,主键,自增,不能为空;csdn字段为字符类型,默认为空;表附加信息为关系类型为InnoDB,默认编码方式为UTF-8,自增起始值为1
在这里插入图片描述
创建成功我们查看下
在这里插入图片描述

2. 增

插入语句语法为

insert into 表名 (字段名1,字段名2,...) values (值1,值2,...); 

insert into test (csdn) values ('gr3enh4nd');

在这里插入图片描述
插入成功

3. 查

基础查询语句

select 字段名 from 表名;

字段名可以用 * 替换,表示查询表中所有字段。
在这里插入图片描述
在这里插入图片描述
这里除了简单查询以外还有子查询,复合查询,这里我就不讲解了,讲解的话太多了,复合查询和子查询可以简单了解下,需要使用时再按照语法构造
limit 限制查询条数
语法

select * from 表名 limit 起始值,偏移量;

select * from test limit 0,1;

在这里插入图片描述
这里就是查询test表,第一条数据

4. 改

语法,介绍update语句需要介绍where
where 附加到语句最后限定语句范围
update 语法

update 表名 SET 字段名 = 更新值 where 限定字段名 = 限定值;

update test SET csdn = 'changge' where id = 1;

在这里插入图片描述
在这里插入图片描述
这里id为1的字段内容被更改了

5. 删

5.1 删除数据库和表

dorp table 表名/ drop database 数据库名

drop table test / drop database csnd

5.2 删除内容

delete from 表名 where 限定条件

delete from test where id =1

删除test表中,id等于1的那条记录

0x04 mysql在web安全中常用的函数

1. concat

将多个字符串连接为一个字符串,返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式
在这里插入图片描述

2. if

语法

if(exp1,exp2,exp3)

参数解释:
如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值
在这里插入图片描述

3. sleep()

等待一段时间,时间单位为秒
在这里插入图片描述

4. 几个报错注入的函数

博客上介绍得比较全
重点看floor,updatexml,extractvalue

5. 文件操作函数

5.1 load_file()

读文件函数

 select load_file('文件路径');

select load_file('/etc/passwd');

使用该函数有个条件是,mysql用户需要有file权限

5.2 into outfile函数

导出到文件

select ... into outfile '文件路径';

可以用来导出一句话

5.3 into dumpfile

同样导出到文件

select ... into dumpfile '文件路径';

这两个函数得区别:

outfile函数可以导出多行,而dumpfile只能导出一行数据
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式

导出库适合用outfile
在udf提权时,导出udf.dll二进制文件时适合用dumpfile

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章