任务标题:认识 sql 并学习数据库的基础操作
要求
1、什么是关系型和非关系型数据库,两者都包含哪些种类的数据库
2、选择一种关系型数据库进行学习(选择自己不熟悉的进行学习)
3、学习数据库中的字段类型并创建库和用户表,需要包含所有字段类型
4、学习数据库的增删改查,记录学习过程(重点是 sql 语句的理解)并形成报告
部分解释
1、对于关系型数据库,都会提供文件读写的功能,但是具体如何实现略有不同,文件读写在我们利用数据库注入漏洞获取 webshell 的时候非常有帮助,所以读写文件的基础是必须要学的。
2、任何关系型数据库,在默认安装成功之后会自带一些默认的系统库和表,这些库和表存储了数据库中很多关键的信息,比如用户创建的库相关信息、表相关信息、用户相关信息、权限相关信息、安装配置相关信息等,在我们利用注入漏洞获取更多信息和权限的过程中有很大的帮助,所以熟悉数据库默认的系统库和表也是很必要的。
3、对于关系型数据库,为了安全都会存在用户和密码,但是密码是经过哈希之后存储在系统表中的,当我们通过注入获取数据库的账号和哈希之后,想要知道哈希之前的明文信息,需要进行暴力破解操作,对于跑哈希来说,hashcat 可以利用 GPU 快速破解哈希,支持非常多的哈希格式,在未来的红蓝对抗中帮助很大。
以上就是下周任务学习的意义,具体学习到什么程度还是取决于自己,大家加油吧!
学习报告
关系型数据库
关系型数据库,是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)。
- 数据的存储形式:
- 关系的处理形式:
- 多个模型一起用的情况:
常见的关系型数据库:
Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL
非关系型数据库
为了区别于关系型数据库,其他数据库统称为非关系型数据库。而常见的非关系型数据库模型及数据库名有
- 面向高性能并发读写的key-value数据库:
key-value数据库的主要特点即使具有极高的并发读写性能,Redis,Tokyo Cabinet,Flare就是这类的代表。
- 面向海量数据访问的面向文档数据库:
这类数据库的特点是,可以在海量的数据中快速的查询数据,典型代表为MongoDB以及CouchDB
- 面向可扩展性的分布式数据库:
这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,如Hbase。
Mysql基础操作
登录Mysql
查看数据库
创建数据库
当前数据库
登录数据库
显示数据表
创建数据表
查看表结构
插入数据
查询数据
删除数据
更改数据
删除数据表
删除数据库
常用命令列表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51create database new_dbname;--新建数据库
drop database old_dbnane; --删除数据库
show databases;--显示数据库
use databasename;--使用数据库
select database();--查看已选择的数据库
show tables;--显示当前库的所有表
create table tablename(fieldname1 fieldtype1,fieldname2 fieldtype2,..)[ENGINE=engine_name];创建表
drop table tablename; --删除表
create table tablename select statement;--通过子查询创建表
desc tablename;--查看表结构
show create table tablename;--查看建表语句
alter table tablename add new_fielname new_fieldtype;--新增列
alter table tablename add new_fielname new_fieldtype after 列名1;--在列名1后新增列
alter table tablename modify fieldname new_fieldtype;--修改列
alter table tablename drop fieldname;--删除列
alter table tablename_old rename tablename_new;--表重命名
insert into tablename(fieldname1,fieldname2,fieldnamen) valuse(value1,value2,valuen);--增
delete from tablename [where fieldname=value];--删
update tablename set fieldname1=new_value where filename2=value;--改
select * from tablename [where filename=value];--查
truncate table tablename;--清空表中所有数据,DDL语句
show engines;--查看mysql现在已提供的存储引擎:
show variables like '%storage_engine%';--查看mysql当前默认的存储引擎
show create table tablename;--查看某张表用的存储引擎(结果的"ENGINE="部分)
alter table tablename ENGINE=InnoDB--修改引擎
create table tablename(fieldname1 fieldtype1,fieldname2 fieldtype2,..) ENGINE=engine_name;--创建表时设置存储引擎
参考链接
- https://www.cnblogs.com/progor/p/8729798.html
- https://blog.csdn.net/robinjwong/article/details/18502195 https://blog.csdn.net/weixin_42105345/article/details/80380444
- https://blog.csdn.net/weixin_41949714/article/details/81877112
- https://www.cnblogs.com/cxx8181602/p/9525950.html
- https://blog.csdn.net/wjlwangluo/article/details/78165588
- https://www.w3cschool.cn/mysql/mysql-drop-database.html