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!

相关推荐
胡萝卜术39 分钟前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人42 分钟前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
天疆说1 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
-SOLO-2 小时前
Android Event 日志完全指南
android
李伟_Li慢慢2 小时前
02-从硬件说起WebGL
前端·three.js
QYR-分析2 小时前
机器人安全控制器行业高速扩容 本土替代迎来全新发展窗口期
人工智能·安全·机器人
IpdataCloud3 小时前
担心IP暴露隐私?用安全IP查询工具自查,三步配置网络出口
网络·tcp/ip·安全·ip
壮哥_icon3 小时前
【Android 系统开发】从掉帧卡顿到丝滑:高频硬件中断(IRQ)的 CPU 亲和性性能优化实战
android·性能优化
千里马学框架3 小时前
Android Framework 新手学习踩坑建议指南
android·智能手机·性能优化·framework·aaos·车载开发·系统工程师
kyriewen3 小时前
看了微软几万人用AI编程的数据——效率涨24%的代价没人提
前端·ai编程·claude