SQL注入总结(一)

注入:
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。用户输入的数据被SQL解释器执行了

注入点类型分类:

数字型注入:select * from news where id=1 and 1=1/and 1=2

数字型注入最多出现在ASP,PHP等弱类型语言中,弱类型语言会自动推导变量类型,例如:参数id=8,php会自动推导变量id的数据类型为int类型,那么id=8 and 1=1,则会自动推导为string类型,这是弱类型语言的特性,而对于java,c#这类强类型语言,如果试图把一个字符串转化为int类型,则会抛出异常,无法继续执行,所以强类型语言很少出现数字型注入漏洞,强类型语言在这个方面比弱类型语言有优势

字符型注入:select * from 表名 where name='admin'

数字型注入不需要单引号闭合,而字符串类型一般需要单引号闭合,而且还要注释多余的代码

数据库不同,字符串的连接符也不同,如SQL Server连接符号为“+”,Oracle连接符为“||”,MySQL连接符为空格

搜索型注入点

这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%'

组合出来的sql注入语句为:select * from news where search like '%测试 %' and '%1%'='%1%'

测试%' union select 1,2,3,4 and '%'='

数据提交方式分类:

(1)GET 注入

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

(2)POST 注入

使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。

(3)Cookie 注入

HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。

4)HTTP 头部注入

注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。

(5)x-forwarded-for注入

X-Forwarded-For: 8.8.8.8’

按照执行效果来分类

(1)基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
(2)基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
(3)基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
*(4)联合查询注入,可以使用union的情况下的注入。
*(5)堆查询注入,可以同时执行多条语句的执行时的注入。

其他的还有:base64注入

SQL注入的作用:

绕过登录验证(万能密码)

获取敏感数据(获取数据库中的信息)

文件操作(读取,写入文件等)

执行系统命令等等

猜你喜欢

转载自blog.csdn.net/yan_star/article/details/81482758