Mysql的基础知识

判断sql注入的重要条件

  1. 是否存在错误信息的反馈,如果有,则有sql漏洞(可以利用错误信息的反馈,提交一些恶意代码),反之没有

基于从服务器接收到的响应

  1. 基于错误的Mysql注入
  2. 联合查询的类型
  3. 堆查询注射
  4. sql盲注(布尔sql盲注、时间sql盲注、报错sql盲注)

基于如何处理输入sql查询

  1. 基于字符串
  2. 数字或整数为基础

基于程度和顺序的注入

  1. 一阶注射(输入注射语句对web产生直接影响,出现结果)
  2. 二阶注射(输入提交的语句不对web产生影响,需要其它的辅助)

基于注入点的位置

  1. 通过用户输入的表单域的注射
  2. 通过cookie注射
  3. 通过服务器变量注射(基于头部信息的注射)

函数

系统函数

1
2
3
4
5
1. ---version()  Mysql的版本
2. ---user() 数据库用户名
3. ---database() 数据库名
4. ---@@datadir 数据库路径
5. ---@@version_compile_os 操作系统版本

字符串连接函数

1
2
3
1. ---concat(str1,str2,...)  没有分隔符地连接字符串
2. ---concat_ws(separator,str1,str2,...) 含有分隔符地连接字符串
3. ---group_concat(str1,str2,...) 连接一个组的所有字符串,并以逗号分隔每一条数据

尝试的语句

1
2
3
4
5
6
7
or 1=1--+
'or 1=1--+
" or 1=1--+
) or 1=1--+
') or 1=1--+
") or 1=1--+
")) or 1=1--+

information_schema

  1. infromation_schema数据表中存在着mysql服务器所有的数据,如数据库名和数据库表和表栏的数据类型和访问权限等,
    即这台mysql服务器有多少数据库,数据库里有多少张数据表,表里的字段类型有哪些,各个数据库需要什么权限才能访问
    都在information_schema这张表中
  2. mysql服务器中还包含了一些表和视图,提供了访问数据库元数据的方式,元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限,有时用于该信息的的其他术语,包括“数据词典”和“系统目录”