网络安全SQL注入基础知识学习
基础知识
在了解SQL注入之前,首先要了解一些基本知识,方便对SQL注入的学习。
SQL注入安全测试中的危害
- 危害数据库数据,对数据进行篡改
- 危害操作系统权限,向目标系统植入木马等。
SQL注入的原理
-
参数用户可控:前端传给后端的参数内容是可以控制的。
-
传入的参数拼接到SQL语句,且带入数据库查询
通过查询的SQL语句,拼接SQL语句,将拼接后的SQL语句注入到原先网站中去,进而实现入侵。通过参数传递,将恶意代码拼接到网站的SQL语句中。可控变量,带入数据库查询,变量未存在过滤或过滤不严谨。
数据库类型
- Access
- MySQL
- Mssql
- Oracle
- Postsql
- SQLite
- Mongodb
SQL注入的方式
基于从服务器接收到的响应
- 基于错误的SQL注入
- 联合查询的类型
- 堆查询注射
- SQL盲注
- 基于布尔SQL盲注
- 基于时间的SQL盲注
- 基于报错的SQL盲注
基于如何处理输入的SQL查询(数据类型)
- 基于字符串
- 数字或整数为基础的
基于程度和顺序的注入(哪里发生了影响)
- 一阶注射
- 二阶注射
一阶注射是指输入的注射语句对WEB直接产生了影响,出现了结果;二阶注射类似存储型XSS,是指输入提交的语句,无法直接对WEB应用程序产生影响,通过其他的辅助间接的对WEB产生危害,这样的被称为是二阶注入
基于注射点的位置上的
- 通过用户输入的表单域的注射
- 通过cookie注射
- 通过服务器变量注射 (基于头部信息的注射)
一般用于尝试的语句
- or 1=1–+
- ‘or 1=1–+
- "or 1=1–+
- )or 1=1–+
- ')or 1=1–+
- ")or 1=1–+
- "))or 1=1–+
闭合问题
常用的函数
- version()——MySQL 版本
- user()——数据库用户名
- database()——数据库名
- @@datadir——数据库路径
- @@version_compile_os——操作系统版本
MySQL知识
在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储记录所有数据库名,表名,列名的数据库,也相当于通过查询它获取指定数据库下面的表名或列名信息
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name : 表名
column_name : 列名