sql注入-漏洞原理-影响-分类

漏洞原理-影响-分类

一、简介

1、对于web应用而言,用户核心数据存储在数据库中,例如MySQL、SQLServer、Oracle;

2、通过SQL注入攻击,可以获取、修改、删除数据库信息,并且通过提权来控制Web服务器等其他操作;

3、SQL注入由研究员Rain Forest Puppy发现,在1998年对外发表文章《NT Web Technology Vulnerabilities》;

4****、****SQL****注入即攻击者通过构造特殊的****sql****语句,入侵目标系统,致使后台数据库泄漏数据的过程;

5、因为SQL注入漏洞造成的严重危害性,所以常年稳居OWASP TOP10的榜首。

用户访问网站的技术架构图

image.png

SQL注入原理

前两句解释:

左边是访问用户/攻击者,访问web服务器,一般的用户访问web服务器,如果web服务器内有存储用户的账号信息,一般我们会对用户的账号信息或者比较敏感的信息,我们会用一个专门的数据库去存储,如mysql

平常的一个用户如登录微信、百度会用到账号密码,如输入admin、admin来访问webServer

Web服务器如果收到一个用户账号密码信息,如登录请求,会把请求信息发送给背后的数据库,执行数据库查询语句,如输入的账号密码是123、123,那这个时候在账号密码数据库里是看不到有123、123的用户名信息的,那这个时候就登陆不进;如果输入的刚好是数据库有的信息,那就能匹配到,一旦匹配到webServer就会让用户登录进来。

后两句解释:

第三句中间又个单引号(name),在sql注入原理中单引号是一个特殊构造的查询参数,如果webServer没有做任何的安全过滤,那webServer会把单引号丢给mysql,单引号又属于mysql不能识别的字符,那mysql就有可能会报错给hacker,这个时候可能会因为一个单引号告诉攻击者这个数据库属于mysql的还是Oracle的,像这种就是一种特殊构造的语句,既然这样黑客可以构造这样一种特殊语句来了解背后的数据库,那意味着可以构造更多的查询语句,

例如第四句,这边会发现右边password置空什么都没有查,但是它左边用一个单引号通过or 1=1 - -这也是一个特殊构造的语句(所以sql语句很关键)。or 1=1 - -代表我们这句话的查询结果永远为真,当我发送给mySql时,mysql如果按照这句话来正常执行,他会把这整一张表里的全部内容拿出来,然后发给webServer,再由webServer全部返回给黑客,这个时候黑客便拿到了整一个网站的敏感数据库。

本质就是:

黑客构造了一种特殊的查询语句,然后这个特殊的查询语句,web服务器又没有做很好的安全过滤,导致把查询语句丢给了数据库,数据库它本身又乖乖的按照构造语句又重新查询,又把所有结果返回给web服务器,服务器又全盘返回给黑客,这个时候就造成了悲剧。

二、影响

Sql注入之后可以做什么?

1、查询数据;

2、读写文件(例如在数据库内留下一个木马文件);

3、执行命令(通过sql注入可能可以拿下整个web服务器,甚至可以对目标网站里面的服务器进行渗透)。

三、分类

1、以注入位置分类:

get注入、post注入、cookie注入、搜索注入

2、以参数类型分类:

字符注入、数字注入

!!!****3****、以注入技术分类(这也是很多****sql****注入工具的分类方法,推荐):

布尔注入、****UNION****注入、时间盲注、****ASCII****逐字解码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容