Web安全:SQL注入漏洞详解,SQL注入常见功能、危害、分类、判断注入点、注入方式

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。

这一章节我们需要知道SQL注入常出现在那些功能,如何判断注入点,注入的分类有哪些以及具体的注入方式。

在这里插入图片描述

SQL注入的原理其实很简单:在传给后端的「参数」中构造「SQL语句」,改变原有的「SQL语法结构」,实现对数据库的操作。

SQL注入

  • 1、SQL注入常出现在哪些功能?
  • 2、SQL注入危害
  • 3、SQL注入分类
  • 4、判断是否存在SQL注入
  • 5、SQL注入方式
  • 6、SQL注入防御
    • 6.1、预编译

1、SQL注入常出现在哪些功能?

凡是涉及「数据库操作的功能」,都有可能存在SQL注入,比如:

  1. 搜索框等查询功能。
  2. 用户注册/用户登录功能。
  3. 密码找回功能。
  4. 用户资料修改功能。
  5. 以及其他同质化功能。

「流量」的角度来看,SQL注入经常出现在:

  1. Get请求传递的参数
  2. Post请求的表单里
  3. Cookie
  4. HTTP请求头的 User-Agent、X-Forworded-For、以及其他传递数据的字段。

2、SQL注入危害

SQL注入的危害主要取决于对数据的操作。

1)首先是数据的查询操作,也就是脱库,对应的危害是敏感信息泄露。

2)其次是数据的修改操作,比如把字段的值改为改成网页链接,对应的危害是网页篡改和挂马。

3)再就是数据的删除操作,删掉数据库的数据,导致系统瘫痪。

4)再就是写入后门文件,拿服务器的权限,远程控制。

3、SQL注入分类

根据输入的 「参数」类型,可以把SQL注入分为:「数值型」注入、 「字符型」注入。

  • 数值型注入:数值+括号型
  • 字符型注入:单引号字符型、双引号字符型、单引号字符串+括号型、双引号字符串+括号型

1)比如下面这个根据ID查询用户的功能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xw240yvV-1645149522105)(E:\data\TyporaPages\image-20220212164303912.png)]
后台对应的SQL如下,「字段类型」是数值型,这种就是数值型注入。

select * from user where id = 1;

2)比如下面这个登录功能,输入的用户名和密码是字符串。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FF5m4MCS-1645149253353)(E:\data\TyporaPages\image-20220212164911231.png)]
后台对应的SQL如下,「字段类型」是字符型,这种就是字符型注入。

select * from user 
where username = 'zhangsan' and password = '123abc';

因为值可以用单双引号、括号包裹,所以在数值型注入和字符型注入的基础上,还存在以下变种:

1)值使用「单引号」包裹时,叫做单引号字符型注入:

select * from user where username = 'zhangsan';

2)值使用「双引号」包裹时,叫做双引号字符型注入:

select * from user where username = "zhangsan";

3)值使用括号包裹数值型,叫数值+括号型注入:

select * from user where id = (1);
select * from user where id = ((1));
包裹多个括号……

4)值使用括号和单引号包包裹,叫单引号字符串+括号型注入:

select * from user where username = ('zhangsan');
select * from user where username = (('zhangsan'));
包裹多个括号……

值使用括号和双引号包裹,叫双引号字符串+括号型注入;

select * from user where username = ("zhangsan");
select * from user where username = (("zhangsan"));
包裹多个括号……

4、判断是否存在SQL注入

在参数中输入「单/双引号」,页面有报错就有可能存在注入点:

  • 输入单引号报错:数值型注入 或 单引号字符型注入
  • 输入双引号报错:数值型注入 或 双引号字符型注入

1)对于「数值型」注入,在参数中添加单、双引号都会报错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xkJShOct-1645349676655)(E:\data\TyporaPages\image-20220212171335494.png)]
在这里插入图片描述

2)对于「单引号字符型」注入,在参数中添加单引号会报错,而添加双引号时不会报错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TGCfOzyU-1645349676664)(E:\data\TyporaPages\image-20220212170231652.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QuGDhppn-1645349676666)(E:\data\TyporaPages\image-20220212170944397.png)]

3)对于「双引号字符型」注入,在参数中添加单引号不会报错,而添加双引号时会报错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G95sRyQa-1645349676669)(E:\data\TyporaPages\image-20220212171608874.png)]
在这里插入图片描述

在数值型、字符型注入的基础上,尝试不同的引号+括号组合,判断出注入点类型,就可以构造SQL语句测试了。

SQL恒成立时页面正常显示,SQL恒不成立时页面异常显示,就说明存在注入:

  • ?id=1 and true – a 页面正常显示
  • ?id=1 and false – a 页面异常(空)显示

5、SQL注入方式

根据利用方式可以分为:

  • 联合注入:使用union关键字拼接多条查询语句。
  • 报错注入:使用报错函数执行SQL语句。
  • 布尔盲注:改变SQL的恒等条件,根据页面响应判断SQL执行结果。
  • 时间盲注:使用延时函数,根据页面响应时间判断SQL执行结果。

6、SQL注入防御

SQL注入的防御分为三个方面::参数过滤 , 预编译 以及 限制权限和报错

  1. 「参数过滤」以各种厂商的WAF以及代码逻辑为主,比如替换空格、关键字、双写、大小写、特殊字符转义等。
  2. 「预编译」主要依赖各种框架,比如Java的mybatis框架 和 PHP的 thinkphp框架
  3. 限制「权限」「报错」是指限制数据库的权限,以及控制数据库的报错信息,报错信息不要对外展示

6.1、预编译

SQL注入的核心是用户输入的参数改变了SQL的语法结构。而预编译,可以防止语法结构被改变。
SQL在执行前,需要先进行语法结构编译,正常情况下,用户输入的参数会参与语法结构编译,如果参数中包含SQL语法关键词,就会改变SQL的语法结构。

预编译的逻辑是先编译完SQL语法结构,再拼接用户的参数。用户输入的参数不参与语法编译过程,就无法改变语法结构,从而防止SQL注入。

详细原理可以查看我的另一篇文章: 预编译防止SQL注入的原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/594598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我国碳酸甲乙酯需求量较大 市场集中度有望不断提升

我国碳酸甲乙酯需求量较大 市场集中度有望不断提升 碳酸甲乙酯(EMC)又称为碳酸乙基甲酯,是一种有机化合物。碳酸甲乙酯分子式为C4H8O3,多表现为一种具有果香味道的无色透明液体。碳酸甲乙酯具有毒性较低、溶解性优良等特点&#x…

书生浦语训练营第2期-第7节笔记

一、为什么要研究大模型的评测? 首先,研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多个通用任务上已经达到或超越了人类水平,但仍然存在质疑,即这些模型的能力是否只是对训练数据的…

【Docker】docker compose服务编排

docker compose 简介 Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。 docker swarm(管理跨节点) Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板&#xff08…

CentOS常用命令有哪些?

目录 一、CentOS常用命令有哪些? 二、不熟悉命令怎么办? 场景一:如果是文件操作,可以使用FileZilla工具来完成 场景二:安装CentOS桌面 一、CentOS常用命令有哪些? CentOS 系统中有许多常用命令及其用法…

老人摔倒监测识别摄像机

随着社会老龄化程度的不断加深,老年人的健康和安全问题日益凸显。在家中独居的老人,一旦发生意外摔倒等情况,往往难以及时得到帮助,造成了严重的安全隐患。为了解决这一问题,近年来,老人摔倒监测识别摄像机…

高效、便捷的重复文件查找与清理工具—4DDiG Duplicate File Deleter

在数字化时代,我们的电脑、手机、云盘等存储设备中,往往堆积着大量的文件。这些文件中有许多是重复的,它们不仅占用了宝贵的存储空间,还可能导致文件管理的混乱。为了解决这个问题,我们急需一款高效、便捷的重复文件查…

亚马逊、沃尔玛新店如何提升转化率?自养号测评的重要作用。

亚马逊作为全球最大的电商平台,每天都有成千上万的卖家在这里开设新店。然而,对于新店来说,如何在激烈的市场竞争中脱颖而出,实现高效的流量转化,是每位卖家都面临的挑战。 一、亚马逊新店怎么转化? 1、优化产品详情…

nginx 启动,查看,停止

nginx 启动,查看,停止 启动 start nginx 查看是否启动成功 tasklist | findstr nginx 停止 nginx -s stop 测试配置文件的语法是否有误 nginx -t 重启nginx nginx-s reload

AI算力提高,高能耗和难散热问题如何突破?

随着AI技术的广泛应用,从智能手机到自动驾驶汽车,从智能家居到工业自动化,AI供电芯片的需求量正呈爆炸式增长。它不仅为AI系统提供稳定的电力供应,确保系统的正常运行,而且还肩负着节能减排、降低能耗的重任。 然而随…

GaussDB数据库SQL系列-复合查询

目录 一、前言 二、复合查询基础 三、实际应用示例 1、使用UNION合并查询结果 2、使用INTERSECT找出共同元素 3、使用EXCEPT排除特定结果 四、高级技巧 1、子查询实例 2、JOIN的应用 五、总结 一、前言 GaussDB是华为自主创新研发的分布式关系型数据库,具…

解决网络ping不通问题

网络ping不通可能有多种原因,以下是一些常见的解决方法: 1. 检查IP地址和域名:确保你使用的是正确的IP地址或者域名来ping目标设备。如果IP地址或者域名错误,ping请求将无法到达目标设备。 2. 检查网络连接:首先确保…

SAP PP学习笔记11 - PP中的MRP相关概念,参数,配置

上文讲了作业区的概念及配置。 SAP PP学习笔记08 - 作业区(工作中心Work Center),作业区Customize-CSDN博客 SAP PP学习笔记09 - 作业区(工作中心Work Center)Customize2(管理码,班次顺序&…

【数据结构(邓俊辉)学习笔记】列表03——有序列表

文章目录 0. 概述1. 唯一化2. 查找2.1 实现2.2 顺序查找2.3 复杂度 0. 概述 介绍下有序列表。 若列表中所有节点的逻辑次序与其大小次序完全一致,则称作有序列表(sorted list)。为保证节点之间可以定义次序,依然假定元素类型T直接…

制冷系统原理分析图

饱和蒸气 过冷液、过热蒸气 温度单位通常用℃表示(水的冰点为0℃,沸点为100℃),在计算热量时一般使用热力学绝对温度K。 压力 表压:(kg/cm2)⇒ MPa。是指压力表所指示的压力,大气压力为0。 绝对压力 &am…

掌握高效技巧:大量文件如何管理的方法,轻松批量重命名电脑文件

在日常生活和工作中,我们经常需要处理大量的文件,尤其是需要进行批量重命名的情况。掌握高效的文件管理技巧,不仅能提高工作效率,还能让文件系统更加有序,方便日后的查找和使用。下面一起来看看云炫文件管理器一些实用…

vue打包报错:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

前言: vue项目,打包报错:CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 报错现象: 报错原因: 这个错误是由Node.js在尝试分配内存时因为系统的可用内存不足而发生的。"JavaScript heap…

Linux的基本指令(下)

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 这篇博客续博主的上篇博客Linux基本指令。 07 …

Acrobat Pro DC全系列安装教程、Acrobat Mac版

Adobe Acrobat Pro DC2023 是一款专业的 PDF 文档编辑和管理软件,由 Adobe 公司开发。它是 Acrobat 产品系列中最全面、最强大的版本之一,提供了许多功能和工具,可以帮助用户轻松地创建、编辑、签署和共享 PDF 文件 百度网盘 内附安装步骤 一…

『FPGA通信接口』DDR(4)DDR3内存条SODIMMs读写测试

文章目录 前言1.MIG IP核配置2.测试程序3.DDR应用4.传送门 前言 不论是DDR3颗粒还是DDR3内存条,xilinx都是通过MIG IP核实现FPGA与DDR的读写。本文区别于DDR颗粒,记录几个与颗粒配置不同的地方。关于DDR的原理与MIG IP的简介,请查看前面文章&…

Ts创建的详细过程及配置步骤(傻瓜式配置创建),最后效果展示

一:首先创建一个 空文件夹 二:使用编辑器打开,再创建一个src文件夹,然后按照以下步骤