漏洞原理-影响-分类
一、简介
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的榜首。
用户访问网站的技术架构图

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****逐字解码