SQL注入(SQL Injection)形成原因web应用程序在接受相关数据参数时未做好过滤,将其直接带入数据库中查询,导致攻击者可以拼接执行构造SQL语句,SQL是一种关系型数据库查询的标准编程语言,用于存储数据以及查询,更新,删除和管理关系型数据库(即SQL数据库查询语言)
一, SQL注入漏洞对于数据安全的影响:
1,数据库信息泄露:数据库中存放的用户隐私信息的泄露
2,网页篡改:通过操作数据库对特定的网页进行篡改
3,网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网码链接,进行挂马攻击
4,数据库被恶意操作:数据库服务器被恶意攻击,数据库的系统管理员的账户被篡改
5,服务器被远程控制,被安装 后门:经由数据库服务器提供的操作系统支持,以修改或者控制操作系统
6,破坏硬盘数据,瘫痪系统
二, 如何挖掘SQL注入漏洞
1.可能存在漏洞的地方
优先观察页面存在传值或者查询的地方或者是搜索框,前端将用户输入的数据带入到数据库中查询,或者是HTT请求头部字段

get型
进行url编码
在burp中测试payload需要进行url编码,浏览器则不用
不需要编码可以用+代替空格,#代替--+,%23代表#,也是注释符
Post型
post型可以用上面方法进行编码,或者使用+代替空格,也可以不用
常见的注入手法
按照参数类型可以分为两种:数字型和子符型
数字型:当输入的数字为整形时,如果存在注入漏洞,则可以认为是数字型注入
字符型:输入的参数被当作字符串,称为字符型。两着的区别在于数字型不需要用单引号来闭合,而字符型一般要用引号来闭合
例如:数字型语句:select*from table where id=3
字符型:select*from table where name='admin'
注入手法分类:UNION query SQL injection(联合查询注入)
Error-based SQL injection(错型注入)
Boolean-based blind SQL injection(基于布尔的盲注)
Time-based blind SQL injection(基于时间的盲注)
Stacked queries SQL injection(可多语句查询注入)
A,联合查询
1,注入点判断
2,判断当前表的字段个数
3,判断显示位
4,爆当前数据库名
5,爆当前数据库中的表
6,爆表中的字段
7,爆相应字段的所有数据
B,基于布尔的盲注
1.判断数据库类型
MySQL数据库表 information_schema.tables
access msysobjects
SQLSevere sysobjects
2,判断当前数据库名
3,判断当前库的表名
4.判断表的字段
5,爆字段中的数据
C,基于时间的盲注(延时注入)
1,延时注入
2,获取数据库名字
3,数据库名字第二个字母的判断
HTTP头注入
产生注入的条件:
能够对请求头消息进行修改
修改的请求头信息能够带入数据库进行查询
数据库没有对输入的请求信息做过滤
1.User-Agent注入
User-Agent:1.1判断注入点:user-agent值后面加‘,引发报错,确定sql注入
1.2采用报错注入函数获取当前数据库名
2.cookie,referer注入和User-agent方法一样