SEC-2022版-0015-WEB攻防-06-通用漏洞之SQL注入
SQL注入(数据库注入)
➢ASP+Access-简易注入-字典猜解
➢ASP+Access-偏移注入-报错显示
➢PHP+MYSQL-简易注入-存储特性
➢PHP+MYSQL-跨库注入-权限属性
前置知识:
SQL注入漏洞产生原理分析
SQL注入漏洞危害利用分析
脚本代码与数据库操作流程
数据库名,表名,列名,数据
数据库类型,数据库用户,用户权限
定义
定义 :脚本代码在实现代码与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),将定义的SQL语句进行执行查询数据时。
其中的SQL语句能通过参数传递自定义值来实现控制SQL语句,从而执行恶意的SQL语句,可以实现查询其他数据(数据库中的敏感数据,如管理员帐号密码)。
这一个过程就可以叫做SQL注入漏洞。
简单来说,根据代码逻辑存在的问题,使用自定义的sql语句去随便查查数据。
危害 : 获取管理员的账户密码,操作数据库内的数据。
sql语句是查询操作,不能乱写。
漏洞产生根本条件:可控变量 特定函数
操作变量和特定函数的过程中所产生的漏洞,例如无法检测语句后面是否被注释掉,产生注入。
正常访问网站时: |
SQL注入攻击流程&数据库基本概念
1、猜测数据库类型
2、根据类型选择思路
数据库基本概念
独立型数据库
ACCESS 独立存在,简单来说可以直接塞到网站根目录,但Mysql不行。 |
统管型数据库
MYSQL 统一管理数据库
- 一个连接下可以同时存在数个数据库
- 每个数据库相对独立,各自管理一个网站
最高数据库用户=root用户 |
Access+MySQL攻击
➢ASP+Access-简易注入-字典猜解
➢ASP+Access-偏移注入-报错显示
➢PHP+MYSQL-简易注入-存储特性
➢PHP+MYSQL-跨库注入-权限属性
为了网站和数据库的安全性,MYSQL内置有ROOT最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。
ASP+Access注入
- 偏移注入-报错提示
- 简易注入-字典猜解
偏移注入
由于Access数据库特性导致这个SQL注入是需要借助字典去猜解表名和列名的,那么就会出现表名或列名猜解不到,可以自定义社工字典或采用偏移注入!
总结:根据前期信息收集创建新字典,拆解表名和列名。
源博客: |
表名知道但是列名不知道。 ==> 都查不到,直接放弃。
偏移注入就是解决表名已知,列名未知的情况!
报错显示
利用报错信息拆解源码信息以及数据库相关报错信息。也可以利用源码拆解数据库的查询语句。
Mysql注入攻击
- 简易注入-存储特性
- 跨库注入-权限属性
MYSQL两种思路
1、非ROOT的注入攻击:常规类的猜解
2、ROOT用户的注入攻击:文件读写操作,跨库查询注入等
- 非ROOT的注入攻击:常规类的猜解 |
information_schema-记录型数据库5.0
MYSQL5.0以上版本:自带的数据库名information_schema,可以查询当前连接下所有的数据库相关的信息。
举个例子:其中的TABLES表记录着所有的数据库中的表名。 |
基于MySQL的攻击
ROOT类型攻击 |
SQLMAP-base64注入
python sqlmap.py -u url?id=MQ== --tamper base64encode.py –dbs |