前言
SQL 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。
SQL 注入已经成为互联网世界 Web 应用程序的最大风险,我们有必要从开发、测试、上线等各个环节对其进行防范。下面博主将简单介绍 SQL 注入的原理及实战操作。
简介
什么是 SQL 注入?
通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。
-
对于 Web 应用程序而言,用户核心数据存储在数据库中,如 MySQL,SQL Server,Oracle;
-
通过 SQL 注入攻击,可以获取,修改,删除数据库信息,并且通过提权来控制 Web 服务器等;
-
SQL 注入由研究员 Rain Forest Puppy 发现,在1998年对外发表文章《NT Web Technology Vulnerabilities》;
-
SQL 注入即攻击者通过构造特殊的 SQL 语句,入侵目标系统,致使后台数据库泄露数据的过程;
-
因为 SQL 注入漏洞造成的严重危害性,所以常年稳居 OWASP TOP10 的榜首!
SQL 注入之后可以做些什么?
- 用户信息被泄露;
- 用户信息被非法倒卖;
- 危害企业,政府,国家安全;
分类
以注入位置分类
- GET 注入
- POST 注入
- Cookie 注入
- 搜索注入
以参数类型分类
- 字符注入
- 数字注入
以注入技术分类
- 错误注入
- 布尔注入
- UNION 注入
- 时间盲注
- ASCII 逐字解码:折半拆解
基础语法
数据库操作
SQL | 作用 |
---|---|
SHOW DATABASES; |
显示 MySQL 的数据库列表; |
USE DBNAME; |
指定接下来要操作的数据库; |
SHOW TABLES; |
显示该数据库的所有数据表; |
SHOW TABLE STATUS FROM DBNAME; |
显示该库中所有表的详细信息; |
SELE |