sql注入的原理是什么

介绍

这篇文章主要介绍了sql注入的原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强> 1。首先了解SQL注入的原理:

SQL注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露贵宾会员密码大多就是通过Web表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。(来源于百度)

也就是说网站页面包含与数据库交互的部分(例如新闻网站的查找功能),而当在网站输入数据信息,数据信息被程序化后传入数据库执行的过程中,网站的开发人员没有对这些传入数据库的相应数据做安全处理(比如过滤特殊字符,编码等),导致黑客可以将恶意代码(也就是包含非法SQL语句的SQL命令)通过网站前段传入数据库,并在数据库中执行这些具有黑客目的的SQL语句,从而造成数据库信息泄露,损坏等后果。

<强> 2。SQL注入的一般分类

按照注入点类型来分类

<强>(1)数字型注入点

许多网页链接有类似的结构http://www.example.com/12.php?id=1基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点id类型为数字,在大多数的网页中,诸如查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。这一类的SQL语句原型大概为select * from表名id=1若存在注入,我们可以构造出类似与如下的SQL注入语句进行爆破:select * from表名id=1和1=1

<强>(2)字符型注入点

网页链接有类似的结构http://xwww.example.com/users.php?用户=admin这种形式,其注入点用户类型为字符类型,所以叫字符型注入点。这一类的SQL语句原型大概为select * from表名用户=& # 39;行政与# 39;值得注意的是这里相比于数字型注入类型的sql语句原型多了引号,可以是单引号或者是双引号。若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from表名用户=& # 39;行政与# 39;和1=1 & # 39;我们需要将这些烦人的引号给处理掉。

<强>(3)搜索型注入点

这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“关键字=关键字“;有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的SQL语句,其原形大致为:select * from表名,字段像& # 39;%关键字% & # 39;若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from表名,字段像& # 39;%测试% & # 39;和& # 39;% & # 39;1%=& # 39;1% % & # 39;

<强> 3。如可判断是否存在SQL注入(小白总结,仅供参考)

简单点讲就是:

所有的输入只要和数据库进行交互的,都有可能触发SQL注入

SQL注入按照数据提交的方式可分为:

<强>(1)注入:提交数据的方式是,注入点的位置在得到参数部分,比如有这样的一个链接http://xxx.com/news.php?id=1, id是注入点。

<强>(2)后注入:使用发布方式提交数据,注入点位置在帖子数据部分,常发生在表单中。

<强>(3)饼干注入:HTTP请求的时候会带上客户端的Cookie,注入点存在饼干当中的某个字段中。

<强> HTTP头(4)部注入:注入点在HTTP请求头部的某个字段中,比如存在用户代理字段中。严格讲的话,饼干其实应该也是算头部注入的一种形式,因为在HTTP请求的时候,饼干是头部的一个字段。

根据提交方式分类后,你会发现SQL注入最长发生的位置在链接地址,数据参数,饼干信息以及HTTP请求头等位置。

了解了可能存在SQL注入的位置,然后我们需要判断在这些位置上是否能够触发SQL注入,最简单的方式就是在相应位置输入和1=1(以及和1=1的变换形式)来判断。对于不同的注入点类型,比如字符型需要适当添加单引号,而对于数字型的注入点则不需要。

<强> 4。SQL注入的高级分类(按照执行效果分类)

<强>(1)基于布尔的盲注:即可以根据返回页面判断条件真假的注入。

<强>(2)基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

sql注入的原理是什么