Session条件竞争--理论

条件竞争

多个线程同时访问一个共享变量或文件时,由于线程的执行顺序不符合预期而导致最后的执行结果不符合开发者的预期。

session

session,被称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。

session条件竞争

在PHP中,session以文件的形式被存储在服务器中。而session条件竞争就是在服务器创建session文件与删除session文件之间的这段时间内,成功调用session文件。

php.ini中有如下关于session的默认配置:

session.auto_start = off
如果开启这个选项,则PHP在接收请求的时候会自动初始化Session,不再需要执行session_start()。但默认情况下,也是通常情况下,这个选项都是关闭的

session.upload_progress.enabled = on
表示upload_progress功能开始。意味着当浏览器向服务器上传一个文件时,php将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中。

session.upload_progress.cleanup = on
表示当文件上传结束后,php将会立即清空对应session文件中的内容。

session.upload_progress.name = “PHP_SESSION_UPLOAD_PROGRESS”
当一个上传在处理中,同时POST一个与设置的session.upload_progress.name同名变量时(这部分数据用户可控),上传进度可以在SESSION中获得

session.use_strict_mode=off
选项默认值为off,表示我们对Cookie中sessionid可控。

利用方法

要想利用session文件,我们首先要让服务器端创建session文件。
但是session.auto_start = off,导致PHP在接收请求时不会自动初始化session,我们的请求没法在后台生成session文件。
但又由于session.use_strict_mode=off,我们可以在Cookie中自定义Session ID,而当我们定义好Session ID后,php后台也会自动初始化session文件。

比如在Cookie中自定义PHPSESSID=shell,PHP将会在服务器上创建一个文件:/tmp/sess_shell

接下来就可以向服务器发起请求了:

<!DOCTYPE html>
<html>
<body>
<form action="http://065a815f-dc94-4c2f-815f-438de33b2fb1.challenge.ctf.show/" method="POST" enctype="multipart/form-data"><input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="<?php system('ls')?>" /><input type="file" name="file" /><input type="submit" value="submit" />
</form>
</body>
</html>

先创建一个这样的文件上传界面。其中PHP_SESSION_UPLOAD_PROGRESS的值就是我们要执行的恶意命令。进入页面:
在这里插入图片描述随便上传一个文件,抓包,在请求头中添加Cookie,并在Cookie中输入PHPSESSID=shell
在这里插入图片描述不知道为什么我这里PHP_SESSION_UPLOAD_PROGRESS的值是空的,手动添加一下即可:

在这里插入图片描述然后设置payload值为空,勾选无限重复发包,然后设置上传线程为30,设置方式如下:

在这里插入图片描述

在这里插入图片描述

然后发包即可。这样就相当于我们不断向服务器发送请求,然后在后台就会不断生成包含了我们输入的恶意代码的session文件。

session文件已经生成,接下来就是进行条件竞争,也就是要在文件被立即删除之前成功包含文件,执行其中的恶意代码。
我们知道文件的位置在/tmp/sess_shell。我这里使用的是ctfshow一道文件包含题目的靶机,包含的参数为file,所以请求头如下:
在这里插入图片描述
依旧设置payload值为空,勾选无限重复发包。不同的是设置上传线程为80.这样包含session文件的线程多于创建session文件的线程,就更可能读取到删除之前的session文件。

找到与其他包长度不同的包,其中就有我们恶意代码执行成功的结果。
在这里插入图片描述执行不同的恶意代码,在请求包中修改恶意代码的形式即可。

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

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

相关文章

Centos8安装软件失败更换镜像源

问题 在Centos 8上安装git&#xff0c;报错如下&#xff1a; sudo dnf install git -y Repository extras is listed more than once in the configuration CentOS Linux 8 - AppStream 0.0 B/s …

如何让网页中的图片不可下载,让文字不可选中/复制

使用css中的伪属性来完成这个操作. 效果展示 文字不可复制: 图中这几个中文字符无法被选中,双击前面这几个字也只能选中后面的英文内容,无法选中也就无法复制. 既然常规方式无法选中,那打开浏览器开发者工具总能复制吧! 我经常这样干, 但是很遗憾,页面检查中根本就没那些内容…

Linux 之 信号概念、进程、进程间通信、线程、线程同步

学习任务&#xff1a; 1、 信号&#xff1a;信号的分类、进程对信号的处理、向进程发送信号、信号掩码 2、 进程&#xff1a;进程与程序的概念、进程的内存布局、进程的虚拟地址空间、fork创建子进程、wait监视子进程 3、 学习进程间通信&#xff08;管道和FIFO、信号、消息队列…

Jmeter——结合Allure展示测试报告

在平时用jmeter做测试时&#xff0c;生成报告的模板&#xff0c;不是特别好。大家应该也知道allure报告&#xff0c;页面美观。 先来看效果图&#xff0c;报告首页&#xff0c;如下所示&#xff1a; 报告详情信息&#xff0c;如下所示&#xff1a; 运行run.py文件&#xff0c;…

ElasticSearch - Bucket Script 使用指南

文章目录 官方文档Bucket Script 官文1. 什么是 ElasticSearch 中的 Bucket Script&#xff1f;2. 适用场景3. Bucket Script 的基本结构4. 关键参数详解5. 示例官方示例&#xff1a;计算每月 T 恤销售额占总销售额的比率百分比示例计算&#xff1a;点击率 (CTR) 6. 注意事项与…

java、excel表格合并、指定单元格查找、合并文件夹

#创作灵感# 公司需求 记录工作内容 后端&#xff1a;JAVA、Solon、easyExcel、FastJson2 前端&#xff1a;vue2.js、js、HTML 模式1&#xff1a;合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…

【初阶数据结构篇】链式结构二叉树(二叉链)的实现(感受递归暴力美学)

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数据,AWS实例存储

aws(学习笔记第十课) 对AWS的EBS如何备份&#xff08;snapshot&#xff09;以及使用snapshot&#xff0c;AWS实例存储 学习内容&#xff1a; 对AWS的EBS如何备份AWS实例存储EBS和实例存储的不足 1. 对AWS的EBS如何备份&#xff08;snapshot&#xff09;以及使用snapshot恢复数…

适用于 c++ 的 wxWidgets框架源码编译SDK-windows篇

本文章记录了下载wxWidgets源码在windows 11上使用visual Studio 2022编译的全过程,讲的不详细请给我留言,让我知道错误并改进。 本教程是入门级。有更深入的交流可以留言给我。 如今互联网流行现在大家都忘记了这块桌面的开发,我认为桌面应用还是有用武之地,是WEB无法替代…

Pycharm贪吃蛇小游戏后续2

前文中我们提到用面向对象去编写贪吃蛇 目前功能实现贪吃蛇吃食物&#xff0c;身体加长&#xff0c;其次可以按下-&#xff08;键盘上右分大小写的-&#xff0c;不是数字的-&#xff09;来改变speed&#xff0c;终端可以看到速度&#xff0c;后续将陆续实现撞墙死亡&#xff0…

你丢失的数据,10款数据恢复软件帮你找!!

现实与虚拟的交错&#xff0c;互联网的进步&#xff0c;加大了我们之间交流的效率&#xff0c;而且便便捷了许许多多的事&#xff0c;比如信息保存&#xff1b;今天咱们来聊聊数据恢复这个话题。你是不是会一不小心删除了重要文件&#xff1f;硬盘出了问题&#xff0c;数据不见…

ArcGIS005:ArcMap常用操作101-150例动图演示

摘要&#xff1a;本文涵盖了GIS软件操作的多方面内容&#xff0c;包括地图文档的新建、打开、保存及版本兼容性处理&#xff1b;错误与警告的查阅及帮助文档的使用技巧&#xff1b;地图打印比例尺的调整与地图信息的完善&#xff1b;图层操作的撤销与恢复&#xff0c;界面元素的…

算法【Java】—— 动态规划之斐波那契数列模型

动态规划 动态规划的思路一共有五个步骤&#xff1a; 状态表示&#xff1a;由经验和题目要求得出&#xff0c;这个确实有点抽象&#xff0c;下面的题目会带大家慢慢感受状态标识状态转移方程初始化&#xff1a;避免越界访问 dp 表&#xff0c;所以在进行填表之前我们要预先填…

【学习】软件测试中的过程管理为何如此重要

在软件世界的繁华盛景之中&#xff0c;无数代码编织成了璀璨的星空&#xff0c;而每一颗闪烁的星点背后&#xff0c;都离不开精心的过程管理来确保其光华不减。正如一座摩天大楼需要稳固的地基与精细的设计图一样&#xff0c;软件的成功问世同样依赖于严谨、系统的流程管控。本…

深入学习 Scrapy 框架:从入门到精通的全面指南

深入学习 Scrapy 框架&#xff1a;从入门到精通的全面指南 引言 在数据驱动的时代&#xff0c;网络爬虫成为了获取信息的重要工具。Scrapy 是一个强大的 Python 爬虫框架&#xff0c;专为快速高效地提取网页数据而设计。本文将深入探讨 Scrapy 的使用&#xff0c;从基础知识到…

【Python】【数据可视化】【商务智能方法与应用】课程 作业一 飞桨AI Studio

作业说明 程序运行和题目图形相同可得90分&#xff0c;图形显示有所变化&#xff0c;美观清晰可适当加分。 import matplotlib.pyplot as plt import numpy as npx np.linspace(0, 1, 100) y1 x**2 y2 x**4plt.figure(figsize(8, 6))# yx^2 plt.plot(x, y1, -., labelyx^2,…

Postgresql源码(137)执行器参数传递与使用

参考 《Postgresql源码&#xff08;127&#xff09;投影ExecProject的表达式执行分析》 0 总结速查 prepare p_04(int,int) as select b from tbl_01 where a $1 and b $2为例。 custom计划中&#xff0c;在表达式计算中使用参数的值&#xff0c;因为custom计划会带参数值&…

自适应对话式团队构建,提升语言模型代理的复杂任务解决能力

人工智能咨询培训老师叶梓 转载标明出处 如何有效利用多个大模型&#xff08;LLM&#xff09;代理解决复杂任务一直是一个研究热点。由美国南加州大学、宾夕法尼亚州立大学、华盛顿大学、早稻田大学和谷歌DeepMind的研究人员联合提出了一种新的解决方案——自适应团队构建&…

GitHub上传自己的项目

目录 一、安装Git插件 1&#xff09;下载 2&#xff09;安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user]&#xff0c;下次可以直接用 一、安装Git插件 1&#xff09;下载 下载地址&#x…

SpringBoot整合EasyExcel加Vue

EasyExcel好处是什么? EasyExcel 是一个基于 Apache POI 的 Java Excel 处理库&#xff0c;主要用于高效地读写 Excel 文件。它的主要好处包括&#xff1a; 高性能&#xff1a;EasyExcel 在内存管理和读取速度上进行了优化&#xff0c;适合处理大规模 Excel 文件。 简洁易用…