SQL注入

SQL注入

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方法一样

LICENSED UNDER CC BY-NC-SA 4.0