【Mysql】通过实验掌握Mysql基本操作
Hello,各位小伙伴大家好~
这里是你们的劳模小编,话说这周一口气写了四篇公众号,加起来有一万多字了~
第四篇是一个SQL注入大总结,还在反复修改中…
在发布之前,先跟着我把Mysql的基本操作一起敲一遍吧~
Here we go ~
基本操作:
1、连接数据库 mysql -h ip -u root ip password
2、退出数据库 exit
3、列出数据库 show databases
4、新建数据库 create database
5、使用数据库 use database_name
6、创建表 create table
7、查询当前数据库中的表 show tables
8、查看表结构 desc tablename,可以查看字段名,字段类型等信息
9、增加数据 insert into tablename values
10、查询数据 select * from table
也可以查询指定的字段
11、删除数据 delete
12、更新数据 update
更新结果:
where语句的使用:
13、limit 查询
先手工插入多行数据
从第1行开始,查询2行(数据库第一行为第0行)
查询前4行
高级操作:
1、排序 order by
降序排序:
升序排序:
2、group by 语法
但这样相同类型只会显示一行,应该联合其他聚合函数进行查询
例如此处将相同城市的电话号码加起来
3、union select 联合查询
and 1=2 可以把前面表格的内容屏蔽掉
利用该功能,在渗透测试时,我们可以查询其他表格的内容,例如查询所有表名
4、exists 语法
创建一个新表,并插入一条数据
已知表格offices,利用exists 查询其他表格是否存在
5、union结合load_file函数读取文件信息
D盘创建一个文件
查询文件内容
6、union结合outfile函数写入文件
查看文件已生成:
查看文件内容,写入正确:
Information_schema 数据库
在Mysql数据库5.0版本中存在着一个元数据库information_schema,其中存放着用户在Mysql中创建的所有其他数据库的信息。
原数据库中几张重要的表:
- schemata:用于存放所有数据库的名称
- tables:用于存放所有数据库中数据表的名字
- columns:用于存放所有数据库的所有数据表中的所有字段的名字
1、查询数据库名称
2、查看college数据库中包含了哪些表名
3、查看student数据表中有哪些字段
一些奇怪的实验:
1、数字型参数可被当作字符型进行查询
id为 int类型参数,正常查询:
当作字符串进行查询,依然可以:
2、SQL字符型注入为什么需要逃逸的实验?
模拟 id = 1 and 1=2进行查询,只识别了1:
乱输入字符串测试,依然成功查询,识别了1,后面的不再识别
所以,在id被以字符型进行查询时,直接插入and语句,后面的查询内容不会生效!!
因为我们需要先插入 ’ 引号进行闭合,再拼接and语句,最后还需要用 # 号 或则 --+ 注释掉剩下的一个 ’ 号 ,避免语法出错。
3、关于’ 和 " 嵌套的截图
双引号的嵌套:
单引号的嵌套:
可以看出,单双引号可以互相包含,当作字符串;
但双引号里面不可以放一个双引号,单引号里面不可以放一个单引号。
4、or语句的测试
在or条件下前后如果都为真则返回所有结果,否则只返回条件为真的一方的值。
这就是今天的全部内容了,大家都明白了吗?
最后,欢迎关注我的个人微信公众号哦~
Peace !