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!

相关推荐
其实防守也摸鱼6 小时前
补天SRC新手入门指南:从0到1的漏洞挖掘之路
网络·python·学习·安全·web安全·数据挖掘·挖洞
徐小夕6 小时前
花了3天,我写了一款开源AI公众号编辑器
前端·vue.js·github
PBitW6 小时前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
Hilaku6 小时前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
●VON6 小时前
鸿蒙 PC Markdown 编辑器内部隐私与安全评审
安全·华为·编辑器·harmonyos·鸿蒙
PBitW6 小时前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
名字还没想好☜7 小时前
React setState 连续调用「丢更新」排查:批量更新与函数式更新
前端·javascript·react.js·react·usestate
阿pin7 小时前
Android随笔-Retrofit
android·retrofit
我不是QI7 小时前
一、主持人信息(域名 网站资产情报搜集)原理解析
安全·网络安全
come112347 小时前
Vue 2 与 Vue 3 语法区别及使用技巧
前端·javascript·vue.js