文件上传之条件竞争上传,upload-labs18关,文件上传二次渲染
2021/5/21 10:31:41
本文主要是介绍文件上传之条件竞争上传,upload-labs18关,文件上传二次渲染,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
环境
- phpstudy
- upload-labs,Pass-18
条件竞争文件上传的原理
直接看代码进行代码审计,相关的函数我已经做了注释
<?php include '../config.php'; include '../head.php'; include '../menu.php'; $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']; // 查找"."在文件名中出现的最后一个位置,然后位置+1,返回后面的内容 // 其实就是截取文件的后缀名 $file_ext = substr($file_name,strrpos($file_name,".")+1); // 文件上传的位置 $upload_file = UPLOAD_PATH . '/' . $file_name; // 判断temp文件是否是合法的文件(通过PHP函数 POST方法上传的文件),如果是的话,将其移动到upload_file处 // 其实这步没啥用,类似于开头的if函数,如果点击submit就运行代码这样子 if(move_uploaded_file($temp_file, $upload_file)){ // 如果后缀名在ext_arr里面的话,那么上传,并且重命名文件 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 = '上传出错!'; } } ?>
分析代码可得到文件上传的逻辑,但是此处是存在逻辑漏洞的,在我们进行文件上传时,服务器先进行文件上传操作,后判断我们上传的文件合不合法,这样我们上传的后门文件只要连接的快,那么服务器就来不及删除它。其原理就是,在我们进行文件读写操作时,是不能删除该文件的。
upload-labs less-18 演示
上传我们的php文件后门,抓取数据包
将得到的数据包发送到intruder模块中,选取UA头进行爆破(修改UA头部对数据包无影响),其实就是不断上传数据包,然后在服务器删除之前连上这个php后门,那么服务器就删除不了我们上传的后门了
设置爆破类型,Start Attack
成功上传文件
参考连接
https://www.bilibili.com/video/BV1JZ4y1c7ro?t=4392&p=21
这篇关于文件上传之条件竞争上传,upload-labs18关,文件上传二次渲染的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现