SQL注入6----(其他注入手法)

一.前言

本章节来介绍一下其他的注入手法,也就是非常规注入手法,来和大家介绍一下

二.加密注入

前端提交的有些数据是加密之后,到了后台在解密,然后再进行数据库查询等相关操作的,那么既然如 此我们也应该将注入语句按照相同的加密方式,加密之后再进行注入,大家如果知道js逆向的话肯定是知道的,如果我们遇到这个情况,那么就得先找到加密方式,再把payload加密后再放进去,当然我前面也有专门逆向的专栏,这里就只是提一嘴了。

三.堆叠注入

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的 运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们 就想到了是不是可以多句一起使用。这个叫做 stacked injection。

原理:在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构 造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入) 也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型 是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输 入:1; DELETE FROM products服务器端生成的sql语句为: Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删 除。堆叠查询可以执行多条 SQL 语句,语句之间以分号(;)隔开,而堆叠查询注入攻击就是利用此特点, 在第二条语句中构造要执行攻击的语句。但是堆叠查询只能返回第一条查询信息,不返回后面的信息。 因此,堆叠注入第二个语句产生错误或者结果只能被忽略,我们在前端界面是无法看到返回结果的。因 此,在读取数据时,我们建议使用union(联合)注入。同时在使用堆叠注入之前,我们也是需要知道 一些数据库相关信息的,例如表名,列名等信息。

在 mysql 中php的函数里面 mysqli_multi_query 和 mysql_multi_query这两个函数(函数也叫做API) 执行一个或多个针对数据库的查询。多个查询用分号进行分隔。堆叠注入的危害是很大,可以任意使用 增删改查的语句,例如删除数据库 修改数据库,添加数据库用户。但实际情况中,如PHP为了防止sql注 入,往往调用数据库的函数是mysqli_ query()函数,其只能执行一条语句,分号后面的内容将不会被执 行,所以可以说堆叠注入的使用条件十分有限,一旦能够被使用,将对数据安全造成重大威胁。

限制:堆叠注入的局限性在于并不是每一个环境下都可以执行,可能受到API或者数据库引擎不支持的限 制,当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些程序。

mysql中有些API是支持的,sqlserver都支持,oracle不支持。

比如新建表(like类似于复制users表) select * from users where id=1;create table test likeusers;

那么通过注入语句来添加,就可以这样 ?id=1;create table test like users --+

四.二次注入

4.1 原理

这个漏洞基本上黑盒测试是很难发现的,基本都是代码审计出来的,找程序代码中操作数据库中数据的 地方,看一下从数据库中取出的数据是否进行了脏数据过滤。

二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句 所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插 入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并 执行SQL查询时,就发生了SQL二次注入。

二次注入的原理,以php代码来举例,在第一次进行数据库插入数据的时候,仅仅只是使用了addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,在写入数据库的时候还 是保留了原来的数据,比如单引号数据,虽然直接注入时效了,但是数据写入到了数据库,数据库中存 的这个数据本身还是脏数据。在将数据存入到了数据库中之后,很多开发者都会认为数据是可信的。在 下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样 就会造成SQL的二次注入。比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库 中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。

二次注入,可以概括为以下两步:

第一步:插入恶意数据 进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的 数据。

第二步:引用恶意数据 开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进 行进一步的检验的处理。

示意图

4.2 测试

那我们用sqli-lab这个靶场环境测试一下

我们找到第24关二次注入进行测试讲解

我们再来看一下这个user表里的信息,发现一个用户叫admin,密码也是admin。

那我们接下来创建一个用户admin‘# 密码123

这就是已经创建好了,我们再登录这个用户进去

现在修改密码成666

成功修改,我们再来看看数据库

发现了admin'#的密码没有修改,但是admin的密码确修改成了666,这就是2次注入。

五.中转注入

把参数中转一下,再发送到指定网址上去,可以对请求携带的数据进行二次加工。

主要是进行加工处理和代理隐藏

后面学习了sqlmap之后,也可以直接将sqlmap的请求都发送到这个脚本上,所以这里就不过多介绍了

六.伪静态注入

首先要明白概念,伪静态,其实就是看似为静态页面,实则为动态页面,就称之为伪静态页面,而伪静 态页面的注入就叫做伪静态注入。

其实关于静态、动态、伪静态,我们直接看url大致就能发现。

动态:

        http://192.168.0.26/pikachu/vul/sqli/sqli_str.php? name=vince&submit=%E6%9F%A5%E8%AF%A2

        https://search.jd.com/search? keyword=%E6%89%8B%E6%9C%BA&wq=%E6%89%8B%E6%9C%BA&ev=5_122671%5E

静态:

        http://127.0.0.1:8000/jxxx/index.html

        http://127.0.0.1:8000/xxx/person.html

伪静态:

        http://127.0.0.1:8000/jaden/1/wei_news.html

        http://127.0.0.1:8000/jaden/news/1.html

        动态访问:http://192.168.61.149/forum.php?mod=viewthread&tid=1&extra=page%3D1

        静态访问:http://192.168.61.149/thread-1-1-1.html

        配置规则:rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;


 

所以我们也可以在伪静态的url里注入,这里就不细致的说了

七.总结

本章节讲了很多其他注入的手法,但大多数都是了解,需要进阶的后续再讲,期待大家的点赞关注加收藏,持续为您更新。

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

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

相关文章

visual studio2022 配置 PCL 1.13.1

PCL库下载 下载链接: https://github.com/PointCloudLibrary/pcl/releases 下载这两个。 PCL库安装 运行.exe文件进行安装。 环境变量勾第二个(其实无所谓,反正还要添加别的环境变量,这里没选之后加也一样)。 安装…

金融学-货币理论

前言 前面学习了什么是货币供给,货币供给的决定以及联邦储备体系在货币供给中所起的作用。现在我们要开始探讨经济中货币供给在决定价格水平与全部商品和劳务(总供给)中的作用。关于货币对经济影响的研究,称为货币理论(monetarythe-ory) 货币数量论 古典…

Visio绘图——给多边形增加连接线

每次在画项目框图和各类爪图的时候,连接线是最烦人的,虽然选择的是折线,单往往事与愿违。 下面就记录一下,如何查找各类连接线。 1、先展开左侧菜单栏,点击如下所示的“>”2、在展开的界面,再次…

【开题答辩全过程】以 付费自习室系统小程序为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

开疆智能Profinet转EtherCAT网关连接TR-Electronic传感器配置案例

本案例是通过开疆智能研发的Profinet转EtherCAT网关将传感器数据传送到PLC,由于两边设备采用协议不同,故而使用网关进行转换。网关配置:打开网关配置软件“EtherCAT Manager”并新建项目。根据不通网关型号也可选择ModbusTCP,Ethe…

VSCode中使用Markdown

文章目录1. 背景2. 安装插件3. 基础写作与预览4. 生成PDF文档5. 插入代码6. 插入图片7. 小结1. 背景 编程技术人员,很多人写作习惯用Markdown格式吧。 首先Markdown很简单,第二它的层次结构特别清晰,再然后它对嵌入图片、代码的支持很优秀。…

2024全栈技术栈选型指南

前后端技术栈选择现代前后端技术栈选择需兼顾市场需求与个人兴趣。前端领域React、Vue、Angular形成三足鼎立,React在大型项目占比达58%,Vue在小中型企业更受欢迎。TypeScript采用率年增长25%,已成为工程化标配。后端技术呈现多元化趋势&…

Spring Boot 项目文件上传安全与优化:OSS、MinIO、Nginx 分片上传实战

在实际的 Web 项目中,文件上传是一个常见需求:用户上传头像、企业后台上传资料、视频平台上传大文件等等。然而,文件上传也是最容易引发安全风险的功能之一,比如恶意脚本上传、木马文件伪装、存储空间消耗攻击。同时,当…

智能安防:以AI重塑安全新边界

传统安防依赖人力监控与简单报警,效率低下且易遗漏风险。随着人工智能、物联网及大数据技术的融合,智能安防正重新定义安全管理的范式,从被动响应转向主动预警,成为智慧城市与数字化生活的重要基石。智能安防的核心是人工智能视觉…

【AI】【强化学习】强化学习算法总结、资料汇总、个人理解

前言:自己学习西湖大学赵老师的课、youtube系列的课程相关比较重要的内容,后续不断再进行完善。 YouTube Serrano.academy rlhf讲的很好 合集最后一个没看 强化学习第四章 police没一步需要无穷,值迭代只需要一步 收敛不一样 值迭代:原因在于…

一键掌控三线资源:极简 Shell 脚本实现 CPU·磁盘·内存可视化巡检

目录 前言 数值型 for 循环 语法格式 示例:打印 1 到 5 示例:打印5次Hello World 示例:计算 1 到 100 的累加和 遍历型 for 循环 语法格式 示例:遍历字符串列表 示例:遍历数组 示例:遍历文件列表…

数据结构:创建堆(或者叫“堆化”,Heapify)

目录 最直观的思路 更优化的思路(自底向上的构建) 第一步:重新审视问题 第二步:找到规律,形成策略 用一个实例来推演 第三步:编写代码 总结与分析 我们来深入探讨“创建堆”(或者叫“堆化…

基于 GPT-OSS 的成人自考口语评测 API 开发全记录

1️⃣ 需求与指标 在项目启动前&#xff0c;我们设定了核心指标&#xff1a; 字错率&#xff08;WER&#xff09;< 5%响应延迟 < 800 ms高可用、可扩展 这些指标将贯穿整个开发和测试流程。 2️⃣ 数据准备 准备训练数据是关键步骤&#xff0c;我们使用了 1k 条自考口…

Linux初始——基础指令篇

Linux常用指令pwdlscdtouchmkdirrmmancpmvcatmorelesswhichwhereisaliasgrepfilezip/unzip 指令rzsztarpwd 在xshell中输入pwd并回车&#xff0c;将输出当前用户所存在的目录位置 可看到当前用户是在/home/hhw这个目录下 ls 在xshell中输入ls会显示当前目录所包含的文件 其中…

Vue-24-利用Vue3的element-plus库实现树形结构数据展示

文章目录 1 项目启动 1.1 创建和启动项目(vite+vue) 1.2 清理不需要的代码 1.3 下载必备的依赖(element-plus) 1.4 完整引入并注册(main.sj) 1.5 设置@别名(vite.config.js) 2 el-tree树形控件 2.1 TreeComponents.vue 2.1.1 模板部分 2.1.2 类型定义(Tree) 2.1.3 树形数据(dat…

Kubernetes 部署与发布完全指南:从 Pod 到高级发布策略

引言:告别手动,拥抱声明式 在传统的部署流程中,我们常常需要手动执行一系列命令:SSH 到服务器、拉取新代码、编译、重启服务、检查日志、处理错误…这个过程不仅繁琐低效,而且极易出错,难以保证环境的一致性。 Kubernetes 彻底改变了这一切。它通过一种 “声明式” 的模…

支持向量机核心知识总结

一、核心基础概念核心目标&#xff1a;在样本空间中找到划分超平面&#xff0c;将不同类别样本分开&#xff0c;且该超平面对训练样本局部扰动的 “容忍性” 最优&#xff08;即抗干扰能力强&#xff09;。超平面定义超平面是 n 维空间中的 n-1 维子空间&#xff0c;是 SVM 分类…

Spark学习记录

1、Spark基础介绍 1.1、Spark基础概念 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎 1.2、Spark运行架构 运行过程&#xff1a; Driver 执行用户程序&#xff08;Application&#xff09;的main()方法并创建 SparkContext&#xff0c;与 Cluster Manager 建…

二进制方式安装部署 Logstash

背景说明 Logstash 是一个开源的数据收集和处理引擎&#xff0c;是 Elastic Stack 的重要组件之一。在本方案中&#xff0c;我们使用 Logstash 作为 Kubernetes 集群日志收集的关键组件&#xff0c;主要用于&#xff1a; 从 Kafka 消费各服务的日志数据对日志数据进行过滤和转…

如何用 Kotlin 在 Android 手机开发一个计算器

使用 Kotlin 开发 Android 计算器1. 创建新项目 打开 Android Studio&#xff0c;选择新建项目&#xff0c;模板选择 "Empty Activity"&#xff0c;语言选择 Kotlin&#xff0c;确保最低 API 级别为 21 或更高。2. 设计用户界面 在 res/layout/activity_main.xml 中定…