第四篇是一个SQL注入大总结,还在反复修改中...
在发布之前,先跟着我把Mysql的基本操作一起敲一遍吧~
Here we go ~
Part.1
基本操作
基本操作
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
查看更新结果:
13、where语句的使用:
14、limit 查询
先手工插入多行数据:
从第1行开始,查询2行(数据库第一行为第0行)
查询前4行:
Part.2
高级操作
高级操作
1、排序 order by
降序排序:
升序排序:
2、group by 语法
但这样相同类型只会显示一行,应该联合其他聚合函数进行查询。
例如此处将相同城市的电话号码加起来:
3、union select 联合查询
and 1=2 可以把前面表格的内容屏蔽掉
利用该功能,在渗透测试时,我们可以查询其他表格的内容,例如查询所有表名,例如:
4、exists 语法
创建一个新表,并插入一条数据
已知表格offices,利用exists 查询其他表格是否存在:
5、union结合load_file函数读取文件信息
D盘创建一个文件
读取文件内容:
6、union结合outfile函数写入文件
查看文件已生成:
查看文件内容,写入正确:
Part.3
Information_schema 数据库
元数据库
在Mysql数据库5.0版本中存在着一个元数据库information_schema,其中存放着用户在Mysql中创建的所有其他数据库的信息。
原数据库中几张重要的表:
1、查询所有数据库名称
2、查看college数据库中包含了哪些表名
3、查看student数据表中有哪些字段
Part.4
一些奇怪的测试
测试
1、数字型参数可被当作字符型进行查询
id为 int类型参数,正常查询:
当作字符串进行查询,依然可以:
2、SQL字符型注入为什么需要逃逸的实验?
模拟 id = 1 and 1=2进行查询,只识别了1:
乱输入字符串测试,依然成功查询,识别了1,后面的不再识别:
所以,在id被以字符型进行查询时,直接插入and语句,后面的查询内容不会生效!!
因此我们需要先插入 ' 引号进行闭合,再拼接and语句,最后还需要用 # 号 或则 --+ 注释掉剩下的一个 ' 号 ,避免语法出错。
3、关于' 和 " 嵌套的截图
双引号的嵌套:
单引号的嵌套:
可以看出,单双引号可以互相包含,当作字符串;
但双引号里面不可以放一个双引号,单引号里面不可以放一个单引号。
4、or语句的测试
在or条件下前后如果都为真则返回所有结果,否则只返回条件为真的一方的值。
Part.5
结语
这就是今天的全部内容了,大家都明白了吗?
Peace !