mysql之union注入


一、sql注入

1、概述

SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,主要是针对程序代码没有对用户提交的参数进行过滤,导致不需要账号密码即可执行sql语句达到获取到数据库中的数据。

2、sql注入类型

1)整形
输入参数的值为整形
2)字符型
输入参数的值是字符串
区别:目前学习只能感觉在闭合点有区别外,其他也没啥

3、sql注入种类

常见的有:
1)union注入攻击
2)报错注入
3)布尔盲注堆
4)时间盲注

二、sql注入判断思路

1、判断注入点

1)and 1=1 和 and 1=2联合使用判断
2)单引号判断

2、判断查询语句是字符型还是整数型

字符型不会去执行加减法,所以可以利用’+’或者’-’号来判断。
例如:?id=2-1?id=1返回的值是一样的就是整数型

3、闭合方式

整数型貌似不用去使用东西刻意闭合,只需使用注释符号把剩下的语句失效就行了。字符型的需要看报错信息来闭合,如果没有报错信息就得自己fuzz了哈哈哈。

4、判断当前表中字段数量

当order by后的数字超过字段数量就会报错,group by也有这种效果,可以当做waf绕过吧。

5、找回显点

在order by判断出数量后,使用union select来判断回显点。

三、information_schema库

1、概述

information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据库的数据),例如数据库名、表名、列的数据类型、访问权限等。

2、information_schema.schemata表

information_schema.schemata表存放着数据库中数据库的信息。
查询所有数据:
select schema_name from information_schema.schemata;
相当于在mysql命令行中执行:show databases;

3、information_schema.tables表

information_schema.tables表中存放系统中的所有表。查找某个数据库中所有的表:
select table_name from information_schema.tables where table_schema = 'databaseName';

4、information_schema.columns表

查询表中所有的字段:
select column_name from information_schema.columns where table_schema = 'databaseName'and table_name = 'tableName';

5、查询表中的所有数据

有了库名和表名还有字段名,所以可以直接使用:
select [字段1,字段2,...] from databaseName.tableName;


文章作者: xi3w3n
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xi3w3n !
评论
  目录