第四篇是一个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 !