目录
前言
这篇文章记录我搭建删除型SQL注入漏洞的环境,以及如何基于报错函数利用该漏洞进行攻击的过程。同时记录学习SQL注入漏洞以及防范措施的过程。
SQL注入概述
1.1 什么叫SQL注入
- 程序不判断和处理用户输入数据的合法性,这使得攻击者能够在管理员不知情的情况下向Web应用程序中的预定义SQL语句添加额外的SQL语句并实施非法操作,从而欺骗数据库服务器执行未经授权的任意查询, 从而进一步获取数据信息。
- 简而言之,SQL注入是将SQL语句包含在用户输入的字符串中,如果在设计不佳的程序中忽略检查,注入的SQL语句将被数据库服务器误认为是正常的SQL语句并运行,攻击者可以执行计划外的命令或访问未经授权的数据。
1.2 SQL注入分类
- 按照注入点类型来分类
(1)数字型注入点
类似结构 http://xxx.com/users.php?id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字
(2)字符型注入点
类似结构 http://xxx.com/users.php?name=admin 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点
(3)搜索型注入点
这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有 “keyword=关键字” 有的不显示在的链接地址里面,而是直接通过搜索框表单提交
- 按照数据提交的方式来分类
(1)GET 注入
提交数据的方式是 GET , 注入点的位置在 GET 参数部分。
(2)POST 注入
使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。
(3)Cookie 注入
HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。
(4)HTTP 头部注入
注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。
- 按照执行效果来分类
(1)基于布尔的盲注
即可以根据返回页面判断条件真假的注入。
(2)基于时间的盲注
即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
(3)基于报错注入
即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。