浅谈SQL注入漏洞原理及利用方式

1.SQL注入

原理:

在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的恶意“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。漏洞产生于脚本,注入是针对数据库进行。

利用条件:

1.参数用户可控:从前端传给后端的参数内容是用户可以控制的。

2.参数带入数据库查询:传入的参数拼接到 SQL 语句,且带入数据库查询。

危害:

通过SQL注入漏洞,可以查询数据、下载数据、写入webshell 、执行系统命令以及绕过登录限制等。

注入方式的选择:

联合注入≥报错注入>DNSlog注入>布尔注入>延时注入

1.1一般SQL注入流程

  1. 判断是否存在注入点,以及闭合方式

  2. 使用 order by 判断字段数

  3. 使用select 1,2 判断回显点

  4. 查询数据库信息 version() datadir()

  5. 查询用户名,数据库名 user() database()

  6. 查看是否能够文件读取 union select 1,load_file('绝对路径’)#

  7. 写入webshell select…into outfile…

2.SQL注入的分类?

按照数据类型区分,分为数字型,字符型,搜索型

按照回显方式区分,分为有回显的和没有回显的

按照请求类型区分,分为GET注入,POST注入,Cookie注入

2.1联合注入

原理:

联合查询注入是联合两个表进行同时查询。

利用条件:

  1. 页面有数据回显

  2. 查询字段数前后必须一致

  3. 使其前条数据查询失败

2.2布尔注入

原理:

通过页面返回正确或者错误两个差异页面,来对我们想要查询的数据其进行判断。

利用方式:

先利用substring函数将数据进行截取,然后再利用acsii函数将截取后的数据进行转换后进行遍历比对。

2.3延时注入

原理:

通过页面对传入数据处理后页面的反馈时间差异,来对我们想要查询的数据进行判断。

利用方式:

利用if函数对查询语句进行判断,接着根据需求而设定对应的sleep函数数值。

2.4报错注入

原理:

执行SQL语句的时,如果执行语句存在错误,并且设定代码中有使用回执错误信息的函数,这时就会将出错回显到页面。

利用方式

利用报错函数进行查询数据,通过信息的回显从而得到我们想要的数据。

十大报错函数

floor(),extractvalue(),updatexml(),exp(),GeometryCollection(),polygon(),multipoint(),multilinestring(),linestring(),multipolygon()

2.5宽字节注入

原理:

先使用过滤函数对传入数据进行过滤,当数据传入数据库进行代码执行时,前后编码不一致,这时数据库采用了宽字节编码,由于编码的识别差异性这一特点,攻击者可以进行恶意构造,使其原本的闭合得以逃逸,从而可以被利用。

利用方式:

通过添加df%等方式,使其因为过滤函数所产生出的 \ ,能够在数据库宽字节编码的识别下组合成为汉字,使其闭合能够逃逸出来。

2.6二次注入

原理:

数据在进行插入时,被过滤函数进行转义处理,导致恶意语句不能正常执行,但经过转义后的数据产生的 \ 不会被插入数据库中,在下一次进行需要进行数据查询的时候,直接从数据库中取出了存在恶意代码的数据,没有进行进一步的检验和处理,直接被调用拼接到语句当中,二次调用产生注入。

2.7DNSlog注入

原理:

通过子查询,将内容拼接到域名内,利用load_file函数去访问共享文件,访问的域名记录被日志记录为报错信息,通过查询日志信息查看我们想要的数据。

利用条件:

1.需要在数据库中支持域名解析

2.需要数据库配置文件中设置secure_file_priv=‘’

3.支持UNC路径

4.目标服务器需要出网

2.8堆叠注入

原理:

执行代码中,使用了可以执行一个或针对多个数据库的查询函数。

利用方式:

执行多条查询 SQL 语句时,语句之间以分号(;)隔开,在语句中构造需要执行攻击的语句。

3.如何使用SQL注入写入shell

原理:

利用union 跟select into outfile,将一句话写入shell.php文件中。

利用条件:

1.知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道

2.gpc没有开启,开启了单引号被转义了,语句就不能正常执行了

3.拥有有file权限,默认情况下只有root有

4.对目录拥有写入权限,一般image之类的存放突破的目录就有

4.SQL注入绕过waf的方法

4.1从架构层面:

找到服务器真实IP,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过。

4.2从协议层面:

分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST及GET提交绕过。

4.3从规则层面:

编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染等。

5.修复建议

使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等。

代码层最佳防御 sql 漏洞方案:采用 sql 语句预编译和绑定变量,是防御sql 注入的最佳方法。

1.所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中。当前几乎所有的数据库系统都提供了参数化 SQL 语句执行接口,使用此接口可以非常有效的防止 SQL 注入攻击。

2.对进入数据库的特殊字符( ’ <>&*; 等)进行转义处理,或编码转换。

3.确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为 int型。

4.数据长度应该严格规定,能在一定程度上防止比较长的 SQL 注入语句无法正确执行。

5.网站每个数据层的编码统一,建议全部使用 UTF-8 编码,上下层编码不一致有可能导致一些过滤模型被绕过。

6.严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

7.避免网站显示 SQL 错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

img

第二阶段:Web渗透(初级网安工程师)

img

第三阶段:进阶部分(中级网络安全工程师)

img

:黑客&网络安全的渗透攻防

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

在这里领取:

这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:

1.学习路线&职业规划

在这里插入图片描述
在这里插入图片描述

2.全套体系课&入门到精通

在这里插入图片描述

3.黑客电子书&面试资料

在这里插入图片描述

4.漏洞挖掘工具和学习文档

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javaweb的学习21_CSS_属性

CSS的属性 (常用)属性&#xff1a; 1. 字体、文本 font-size&#xff1a;字体大小 color&#xff1a;文本颜色 text-align&#xff1a;文本的对齐方式 line-height&#xff1a;行高 2. 背景 background&#xff1a;是个复合属性 3. 边框 border&#xff1a;设置边框&#xff0c…

WordPress自动生成原创文章插件

WordPress作为最受欢迎的内容管理系统之一&#xff0c;为博客和网站的搭建提供了便捷的解决方案。而在内容创作方面&#xff0c;自动生成原创文章的插件为WordPress用户提供了更为高效的选项。 什么是WordPress自动生成原创文章插件&#xff1f; WordPress自动生成原创文章插件…

【NLP学习记录】One-Hot编码

1. One-Hot编码概念 one-hot编码的基本思想是将每个类别映射到一个向量&#xff0c;其中只有一个元素的值为1&#xff0c;其余元素的值为0。这样&#xff0c;每个类别之间相互独立&#xff0c;不存在顺序或距离关系。 举例&#xff1a;对于三个类别的情况&#xff0c;可以使用…

基于协同过滤的毕业生就业推荐系统python+django+flask

功能&#xff1a; 管理员&#xff1a;主页、个人中心、求职者管理、企业管理、招聘信息管理、就业信息管理、面试邀请管理、就业签约管理、投递的简历管理、系统管理 企业&#xff1a;主页、个人中心、求职者管理、招聘信息管理&#xff08;可看见所有的招聘信息。发布招聘信息…

三 C#插入排序算法

简介 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤…

【iOS】Blocks

文章目录 前言一、什么是Blocks二、Blocks模式1.Block语法2.Block类型变量3.截获自动变量值4.__block说明符5.截获的自动变量 三、Blocks的实现1.Block的实质__main_block_impl_0Block对象的实现结构体初始化 2.截获自动变量值3.__block说明符4.Block存储域5.__block变量存储域…

数据结构——lesson10排序之插入排序

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

python之数据类型转换

基本数据类型转换 Python 中基本数据类型转换的方法有下面几个。 方法说明int(x [,base ])将x转换为一个整数float(x )将x转换到一个浮点数complex(real [,imag ])创建一个复数str(x )将对象 x 转换为字符串repr(x )将对象 x 转换为表达式字符串eval(str )用来计算在字符串中…

Linux的背景介绍

1.Linux的发展史 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff08…

【源码阅读】evmⅠ

代码位置如下&#xff1a; 参考link 以太坊中有一个很重要的用途是智能合约&#xff0c;而其中evm模块是实现了执行智能合约的虚拟机。evm可以逐条解析执行智能合约的指令。 evm中的核心对象是EVM&#xff0c;代表一个以太坊虚拟机。其内部主要依赖&#xff1a;解释器Interore…

蓝桥杯历年真题Java b组 省赛 2018年第九届 第几天

一、题目一 第几天 2000年的1月1日&#xff0c;是那一年的第1天。 那么&#xff0c;2000年的5月4日&#xff0c;是那一年的第几天&#xff1f; 注意&#xff1a;需要提交的是一个整数&#xff0c;不要填写任何多余内容。 分析&#xff1a; 将每个月的天数加起来&#xff0c…

2024年敏捷产品负责人CSPO认证培训

课程名称&#xff1a;Scrum Product Owner CSPO产品负责人认证 课程类型&#xff1a;经理级 课程简介&#xff1a; Scrum Product Owner产品负责人在Scrum产品开发当中扮演“舵手”的角色&#xff0c;他决定产品的愿景、路线图以及投资回报&#xff0c;他需要回答为什么做&am…

Python——字典

一、字典特性介绍 字典在 Python 中极为重要&#xff0c;是属于映射类型的数据结构。 字典有⼀对⼉⼤括号组成 {} , 字典内的元素都是成对⼉出现的 {"a":1} , 他们⽤英⽂的冒号( : )隔开, 左边叫做键(key),右边的叫值(value), 通常叫做键值对⼉。 每个元素⽤英⽂的逗…

【Python循环4/5】跳出循环的办法

目录 导入 break 具体用法 在for循环中的运用 在while循环中的运用 continue 具体用法 区别 总结 导入 前几天的博文里&#xff0c;我们学习了for循环和while循环。 无论是for循环还是while循环&#xff0c;默认的终止条件都是边界条件。在触发边界条件之前&am…

生成微信小程序二维码

首页 -> 统计 可以通过上面二个地方配置&#xff0c;生成小程序的二维码&#xff0c;并且在推广分析里&#xff0c;有详细的分析数据&#xff0c;

国务院大动作!2024年深入推广「项目管理国标」,行业将迎新风向!

职场竞争激烈&#xff0c;项目管理专业人才在各个行业中的作用越来越凸显出来。在23年之前&#xff0c;我国关于通用项目管理人才的培养更多依赖于国外的PMP认证&#xff0c;缺少自主的认证评价标准和体系。 为了弥补这一空缺&#xff0c;基于国内的项目管理发展需求&#xff…

基于单片机的智能台灯设计1.42

摘 要 社会在发展&#xff0c;时代在进步&#xff0c;人们对生活质量需求更加膨胀&#xff0c;是否拥有高科技技术也最终决定着产品是否可以满足人们的欲望&#xff0c;只有性价比更高&#xff0c;才可以得到更好的青睐。现在的电子产品愈来愈多&#xff0c;龙蛇混杂&#xff…

2.1(TCP)

TCP—传输控制协议 是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。 特点&#xff1a; TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议每一条TCP连接有且只能有两个端点。可靠、有序、无丢弃和不重复。TCP协议提供全双工通讯。 发送缓存 存放发送方…

达科为生物领航,国产高端试剂“达优®”蓄势待发

在生物科技领域&#xff0c;每一次技术的突破都意味着行业前进的一大步。在即将盛大开幕的双博会上&#xff0c;深圳市达科为生物工程有限公司将携其国产高端试剂品牌“达优”闪亮登场&#xff0c;向世界展示中国生物科技的最新成果。而在这背后&#xff0c;是达科为生物多年来…

Docker【docker使用】

文章目录 前言一、概念二、常用方法1.镜像2.容器 三、镜像与镜像的关系&#xff0c;以及镜像构建和管理 前言 上一篇文章讲了docker的安装&#xff0c;本片文章我们来聊聊docker的一些常用操作。以及镜像、容器之间的关系 一、概念 docker三大核心概念&#xff1a;镜像 Imag…