文件上传漏洞2总结篇(含思维导图,齐全)

文件上传漏洞全解析1【绕过方法齐全搭配例题,小白必备】-CSDN博客

这是1,更加详细,此篇为总结,过一遍为主,以及上一篇的一点补充

文件上传漏洞:upload-labs靶场通关_文件上传漏洞靶场_文件上传靶场-CSDN博客这位大佬的靶场也很详细)

文件上传绕过方法总结(入门必看)-CSDN博客这个总结的也厉害)

自己手搓的不容易。。。。。。。。

等价拓展名
如何判断需要什么绕过方式(以代码为例)【省略部分】
黑名单字样
复制代码
$deny_ext = array('.asp','.aspx','.php','.jsp');
//设置了黑名单(黑榜)
if(!in_array($deny_ext)) {
  $is_upload = true;
  } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
        }
//!in_array看数组是否在$deny_ext,在则else,不在则if
避免空格绕过
复制代码
$file_ext = trim($file_ext);
  • 目的 :确保后缀无多余空格(如.php .php)。
  • trim():去除文件名前后的空格,避免因空格导致的解析错误。
避免点绕过
复制代码
$file_name = deldot($file_name);

deldot():自定义函数(未展示代码),作用是删除文件名末尾的.(例如将shell.php.处理为shell.php)。

目的:防止攻击者通过shell.php.绕过后缀检查(部分系统会自动忽略末尾的点)。

避免大小写绕过
复制代码
$file_ext = strtolower($file_ext);

strtolower():将后缀转为小写(如.PHP→.php)。

目的:避免大小写绕过(如.PhP)。

避免::$DATA绕过
复制代码
$file_ext = str_ireplace('::$DATA', '', $file_ext);
  • str_ireplace('::DATA', '', file_ext):移除后缀中的::$DATA(Windows NTFS文件系统的伪流标记)。

  • 背景 :Windows中file.php::$DATA会被解析为file.php,攻击者可能利用此特性绕过过滤。

文件头绕过
1. 图片类
  • JPEGFF D8 FF E0(常见)或 FF D8 FF E1(带EXIF信息)
  • PNG89 50 4E 47 0D 0A 1A 0A(标志性开头)
  • GIF47 49 46 38 39 61(GIF89a)或 47 49 46 38 37 61(GIF87a)
  • BMP42 4D("BM",Bitmap的缩写)
2. 文档类
  • PDF25 50 44 46("%PDF")
  • Word(.doc/.docx)
    • .doc(旧版):D0 CF 11 E0 A1 B1 1A E1(复合文档格式)
    • .docx(新版):50 4B 03 04(ZIP压缩包,同.xlsx/.pptx
  • Excel(.xls/.xlsx)
    • .xls(旧版):D0 CF 11 E0 A1 B1 1A E1
    • .xlsx(新版):50 4B 03 04
3. 压缩包类
  • ZIP50 4B 03 04(所有ZIP压缩文件的开头)
  • RAR52 61 72 21 1A 07 00("Rar!")
  • 7Z37 7A BC AF 27 1C("7z\xBC\xAF\x27\x1C")
4. 可执行文件类
  • Windows EXE4D 5A("MZ",DOS时代的标记)
  • ELF(Linux可执行文件)7F 45 4C 46("ELF")
  • PE(Windows程序)4D 5A后紧跟50 45 00 00(PE文件标记)
5. 其他常见类型
  • TXT(ASCII):无固定文件头(纯文本,开头为字符本身)
  • HTML3C 21 44 4F 43 54 59 50 45<!DOCTYPE
  • MP349 44 33(ID3标签开头)或 FF FB(音频帧开头)
相关推荐
带刺的坐椅1 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·springboot·web·solon
曲幽5 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
曲幽6 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
两个人的幸福7 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo9 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack9 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820710 天前
PHP 扩展——从入门到理解
php
鹏仔先生11 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下11 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
treesforest11 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全