| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 文件上传(一) -> 正文阅读 |
|
[PHP知识库]文件上传(一) |
一、文件上传概述1.1、原理 ??????? 在存在文件上传功能的页面,若没有对上传的文件进行检测、验证以及过滤。可能会导致恶意用户上传恶意脚本文件,被获取服务端的权限。 1.2、文件上传代码常用函数 $_FILES数组内容如下:? $_FILES['myFile']['name'] 客户端文件的原名称。? $_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。? $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。? $_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。
二、文件上传漏洞绕过2.1、前端JS限制绕过 原理:浏览器通过JS代码对上传的文件进行格式验证 绕过方式: ??????? 1》可以通过Burp抓包修改上传文件的格式 ??????? 2》修改JS其中关键的检测函数,或者直接禁用JS 漏洞代码分析:
上述JS函数只允许“.jpg | .png | .gif”的图片格式上传。 2.2、服务端MIME类型验证
检测原理:服务端通过对MIME类型格式的验证进行过滤。 绕过方式:通过Burp抓包修改Content-Type属性的值来进行检测绕过。 漏洞代码分析:
2.3、文件头绕过 原理:不同的文件存在的文件头格式不同,服务端代码通过检测上传文件的文件头格式来判断是否存在恶意上传。 绕过方式:在上传的恶意文件中修改或添加服务端允许上传的对应文件头。 常见的文件头: ??????? JPEG:0xFFD8FF ??????? PNG: 0x89504E470D0A1A0A ??????? GIF: 47 49 46 38 39 61 (GIF89a) 漏洞代码分析:
2.4、.htaccess文件上传 原理:.htaccess文件上传是利用.htaccess文件可以对服务器进行配置的功能,实现将扩展名为.jpg .png等文件当作PHP文件解析的过程。
2.5、文件截断上传 原理:PHP的版本低于5.3.4时,会把它当作结束符,导致后面的数据直接被忽略,造成文件上传被截断。当上传路径可控时,可以通过%00截断进行木马上传。 绕过方式: 通过可控的上传路径,将恶意脚本后面通过%00截断。 漏洞代码:
2.6、竞争条件上传 竞争条件:指多个线程在没有进行锁操作或者同步操作的情况下同时访问同一个共享代码、变量、文件等,运行的结果依赖于不同线程访问数据的顺序。 原理:文件上传时,先上传、再检测、不合条件时再删掉的场景,攻击者利用多线程并发不断上传一个可以写webshell的脚本,然后马上访问这个刚上传的文件,当服务端判断并删除的时间大于客户端线程访问的时间时,客户端可以在删除之前访问到这个脚本并成功运行写入webshell。 漏洞分析:
PS:(本文使用代码出自upload-lab靶场)。 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 3:19:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |