前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >sql注入分类

sql注入分类

作者头像
Power7089
修改于 2020-07-28 09:19:04
修改于 2020-07-28 09:19:04
8690
举报

**SQL全称是Structured Query Language**

是一种结构化的查询语言,用于与数据库进行交互并能够被数据库解析。SQL注入攻击是一种常见的注入攻击类型。攻击方式在用户与程序进行交互时发生的。如在表单输入、搜索框输入功能中插入SQL命令,然后发送到服务端。服务端对数据进行了解析执行,并执行了一些非预期的操作。

**按照注入点类型来分类**

**(1)数字型注入点**

在 Web 端大概是 `http://xxx.com/news.php?id=1` 这种形式,其注入点 `id` 类型为`数字`,所以叫数字型注入点。

这一类的 SQL 语句原型大概为 `select * from 表名 where id=1`。

组合出来的sql注入语句为:`select * from news where id=1 and 1=1`

> eg:http://www.xxx.com/news.php?id=1===>http://www.xxx.com/news.php?id=1 and 1=1

**(2)字符型注入点**

在 Web 端大概是 `http://xxx.com/news.php?name=admin` 这种形式,其注入点 `name` 类型为`字符类型`,所以叫字符型注入点。

这一类的 SQL 语句原型大概为 `select * from 表名 where name='admin'`注意多了引号。

组合出来的sql注入语句为:`select * from news where chr='admin' and 1=1 ' '`闭合单引号

chr='admin' union select 1,2,3,4 and '1'='1 ====> chr='admin'(闭合前面单引号) union select 1,2,3,4 and '1'='1'

判断字符型漏洞的 SQL 注入点:

① 还是先输入单引号 `admin'` 来测试

SQL 语句就会变为:`SELECT * FROM table WHERE username = 'admin''`

页面异常。

② 输入:`admin' and 1 = 1 --`

注意:在 admin 后有一个单引号 ',用于字符串闭合,最后还有一个注释符 --

SQL 语句变为:`SELECT * FROM table WHERE username = 'admin' and 1 = 1 --`

页面显示正确。

③ 输入:`admin' and 1 = 2 --`

SQL 语句变为:`SELECT * FROM table WHERE username = 'admin' and 1 = 2 --`

页面错误。

满足上面三个步骤则有可能存在字符型 SQL 注入。

> eg:http://www.xxx.com/news.php?name=admin ===>http://www.xxx.com/news.php?name='admin' and 1=1 ' '

**(3)搜索型注入点**

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

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

测试可以用`%' union select 1,2,3,4 and '%'='`这个语句

> eg: http://www.xxx.com/keyword=xxx`====>http://www.xxx.com/keyword=xxx%' 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 是头部的一个字段。

**按照执行效果来分类**

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

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

**(3)基于报错注入,**即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

**(4)联合查询注入,**可以使用union的情况下的注入。

**(5)堆查询注入,**可以同时执行多条语句的执行时的注入

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员阿甘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
夯实Java基础系列21:Java8新特性终极指南
Lambda表达式(也称为闭包)是整个Java 8发行版中最受期待的在Java语言层面上的改变,Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据:函数式程序员对这一概念非常熟悉。在JVM平台上的很多语言(Groovy,Scala,……)从一开始就有Lambda,但是Java程序员不得不使用毫无新意的匿名类来代替lambda。
Java技术江湖
2019/10/24
5620
夯实Java基础系列21:Java8新特性终极指南
一文看透java8新特性
毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。在这篇教程中,我们将一一探索这些变化,并用真实的例子说明它们适用的场景。
好好学java
2018/08/16
8470
一文看透java8新特性
Java8新特性实践
Java 8 已经发行好几年了,作为一名Java程序员,再不应用它的美好的新特性肯定要被社会淘汰了。这篇文章,我作为一名Java8新手用代码实践Java8新特性,来探究它的美好。 1. Lambda表达式与Functional接口 Lambda表达式(也称为闭包),它允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据,这一特性和scala语言很像。 在最简单的形式中,一个lambda可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如: Arrays.asList( "
神秘的寇先森
2018/05/30
9330
马上Java14要来了,你还不知道Java8的新特性?
Lambda表达式, 也可以称为闭包,它是Java8这个版本最重要的新特性.Lambda允许把函数作为一个方法的参数, 可以使代码变得更加简洁.
故里
2020/11/25
7230
马上Java14要来了,你还不知道Java8的新特性?
Java 8新特性
编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。 在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8——lambda与并发,Java 8 Date Time API 教程: LocalDateTime和在Java 8中抽象类与接口的比较。 我们也在其他地方引用了15个必读的Java 8教程。当然,我们也探究了Java 8的一些不足之处,比如Java 8的“黑暗面”。 现在,是时候把所有Java 8的重要特性收集整理成一篇单
xiangzhihong
2018/02/05
1.5K0
Java 8新特性
【译】Java 8的新特性—终极版
声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自
汤高
2018/01/11
1.3K0
【译】Java 8的新特性—终极版
Java8的十大新特性你了解多少呢?
Java 8可谓是自Java 5以来最具革命性的版本了,她在语言、编译器、类库、开发工具以及Java虚拟机等方面都带来了不少新特性。我们来一一回顾一下这些特性。
MonroeCode
2018/01/12
9030
你发任你发,我用Java8!
Java 语言和平台的发展历程中有两个主要的公司参与:Sun Microsystems(太阳微系统公司)和 Oracle(甲骨文公司)。
不惑
2024/06/17
4370
你发任你发,我用Java8!
一次性实战java8 新特性(全)—— Lambda、Optional、stream、DateTime
本篇博客你将学到: 1.Lambda表达式 2.Optional类,告别空指针异常 3.Stream流式处理 4.时间处理LocalDate、LocalTime、LocalDateTime、ZonedDateTime、Clock、Duration 5.重复注解 6.扩展注释 7.更好的类型推荐机制 8.参数名字保存在字节码中 9.异步调用 CompletableFuture
源码之路
2020/09/03
2.6K0
Java8新特性
Lambda表达式可以看成是匿名内部类,使用Lambda表达式时,接口必须是函数式接口
shimeath
2020/07/30
6250
Java8新特性
Java8新特性及使用(一)
以下是Java8中的引入的部分新特性。关于Java8新特性更详细的介绍可参考这里。
Abalone
2022/07/14
1K0
Java8新特性详解
Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。
Jensen_97
2023/07/20
2.3K0
Java8新特性详解
Java8 通关攻略
Java8 特别强大的是Lambda 表达式和Stream,通过它两新增和增强了很多包
乔戈里
2020/02/14
1.2K0
Java8 通关攻略
Java8 新特性
Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以取代大部分的匿名内部类,可以写出更简洁、更灵活的代码。尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。作为一种更紧凑的代码风格,使 Java 的语言表达能力得到提升。JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。 【1】从匿名类到 Lambda 的转换:虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法。
Java架构师必看
2021/05/14
9260
Java8 新特性
java8新特性
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
1.6K0
java8新特性
JAVA8十大新特性详解
Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:
用户3467126
2019/11/01
9540
JDK1.8的新特性
JDK1.8已经发布很久了,在很多企业中都已经在使用。并且Spring5、SpringBoot2.0都推荐使用JDK1.8以上版本。所以我们必须与时俱进,拥抱变化。
框架师
2021/03/04
8670
JDK1.8的新特性
Java 8 核心新特性深度解析与工程实践
方法引用本质上是对现有方法的直接引用,通过简洁的语法将方法转换为函数式接口的实例。其类型系统与Java类型推导机制深度耦合:
忆愿
2025/02/06
1322
Java 8 核心新特性深度解析与工程实践
Java8新特性
这样一来每次都要写上具体的实现方法 a+b,如果需求变更,则每一处实现都需要更改,基于这种情况,可以将后续的是实现更改为已定义的 方法,需要时直接调用就行
shaoshaossm
2022/12/27
6540
Java8新特性
Java 面试知识点解析(四)——版本特性篇(2)
在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大部分内容参照自这一篇文章,有一些自己补充的,也算是重新学习一下 Java 吧。
我没有三颗心脏
2018/05/17
1.6K0
Java 面试知识点解析(四)——版本特性篇(2)
相关推荐
夯实Java基础系列21:Java8新特性终极指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档