upload-labs靶场Pass-02

upload-labs靶场Pass-02

分析源码

复制代码
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

源码中

if (( F I L E S [ ′ u p l o a d f i l e ′ ] [ ′ t y p e ′ ] = = ′ i m a g e / j p e g ′ ) ∣ ∣ ( _FILES['upload_file']['type'] == 'image/jpeg') || ( FILES[′uploadfile′][′type′]==′image/jpeg′)∣∣(_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))

可以看出验证方式是文件类型,使用白名单验证
选择上传文件并抓包,修改文件类型可以绕过

上传php文件,本来是不容许的

抓包

修改Content-Typr字段为源码中提到的任意一种,放包

查看服务端,有了我们上传的php文件,由此绕过成功

OVER!

相关推荐
小宇的天下3 分钟前
Virtuoso 中的tech file 详细说明
java·服务器·前端
恋猫de小郭5 分钟前
Compose Multiplatform 1.10 Interop views 新特性:Overlay 和 Autosizing
android·flutter·macos·kotlin·github·objective-c·cocoa
APItesterCris8 分钟前
商品详情 API 的签名验证与安全接入技术要点
大数据·数据库·安全·架构
Zoey的笔记本19 分钟前
「软件开发缺陷管理工具」的闭环追踪设计与自动化集成架构
java·服务器·前端
Sapphire~22 分钟前
【前端基础】04-XSS(跨站脚本攻击,Cross-Site Scripting)
前端·xss
奔跑的web.24 分钟前
Vue 3.6 重磅新特性:Vapor Mode 深度解析
前端·javascript·vue.js
MediaTea24 分钟前
Python OOP 设计思想 13:封装服务于演化
linux·服务器·前端·数据库·python
爱敲代码的婷婷婷.25 分钟前
patch-package 修改 node_modules流程以及注意点
前端·react native·前端框架·node.js
xinxinhenmeihao27 分钟前
使用长效代理是否存在安全风险?长效代理适合哪些应用场景?
服务器·网络·安全
这是个栗子29 分钟前
【API封装参数传递】params 与 API 封装
开发语言·前端·javascript·data·params