SQL
SQL(Structured Query Language) – 结构化查询语句
用途:用于存取数据以及查询、更新和管理关系数据库系统
SQL注入
SQL注入是服务器端未严格校验客户端发送的数据,而导致服务器端SQL语句被恶意修改并成功执行的行为
本质:把用户输入的数据当作代码执行
注入产生原因
- 代码对带入SQL语句的参数过滤不严格
- 未启用框架的安全配置。例如:PHP的magic_quotes_gpc
- 未使用框架安全的查询方法
- 测试接口未删除
- 未启用防火墙
- 未使用其他的安全防护设备
注入条件
注入的两个条件:
-
用户可以控制传参
-
用户输入的语句被带入数据库进行查询
业务场景
- 登录功能
- 搜索功能
- 详情页
- 商品购买
- …
任何和数据库产生交互的地方都有可能存在注入
漏洞危害
- 数据库信息泄露:脱库
- 网页篡改:通过操作数据库对特定网页进行篡改
- 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击
- 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员账号被篡改
- 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统
SQL注入分类
按照HTTP请求方法分类
- GET型注入
- POST型注入
按照SQL数据类型分类
- 整型注入
- 字符型注入
其他类型分类
- 报错注入
- 双注入
- 盲注(布尔盲注、时间盲注)
- Cookie注入
- User-Agent注入
- …