IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 17.文件上传漏洞-后端绕过方法 -> 正文阅读

[开发工具]17.文件上传漏洞-后端绕过方法

【文件上传之后端黑白名单绕过】

文件上传常见验证:

后缀名:黑名单、白名单
文件类型:MIME信息
文件头:内容头信息

黑名单:明确不能上传的后缀
php,jsp,asp等

白名单:明确能够上传的后缀
jpg,png,gif等等

文件头

塒NG:png的文件头
xFFxD8:jpg的文件头
GIF89a:gif的文件头

【文件类型MIME绕过】

数据包中的Content-Type就是MIME,通过格式猜测哪种类型的MIME

{".3gp",    "video/3gpp"},  
{".apk",    "application/vnd.android.package-archive"},  
{".asf",    "video/x-ms-asf"},  
{".avi",    "video/x-msvideo"},  
{".bin",    "application/octet-stream"},  
{".bmp",    "image/bmp"},  
{".c",  "text/plain"},  
{".class",  "application/octet-stream"},  
{".conf",   "text/plain"},  
{".cpp",    "text/plain"},  
{".doc",    "application/msword"},  
{".docx",   "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},  
{".xls",    "application/vnd.ms-excel"},   
{".xlsx",   "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},  
{".exe",    "application/octet-stream"},  
{".gif",    "image/gif"},  
{".gtar",   "application/x-gtar"},  
{".gz", "application/x-gzip"},  
{".h",  "text/plain"},  
{".htm",    "text/html"},  
{".html",   "text/html"},  
{".jar",    "application/java-archive"},  
{".java",   "text/plain"},  
{".jpeg",   "image/jpeg"},  
{".jpg",    "image/jpeg"},  
{".js", "application/x-javascript"},  
{".log",    "text/plain"},  
{".m3u",    "audio/x-mpegurl"},  
{".m4a",    "audio/mp4a-latm"},  
{".m4b",    "audio/mp4a-latm"},  
{".m4p",    "audio/mp4a-latm"},  
{".m4u",    "video/vnd.mpegurl"},  
{".m4v",    "video/x-m4v"},   
{".mov",    "video/quicktime"},  
{".mp2",    "audio/x-mpeg"},  
{".mp3",    "audio/x-mpeg"},  
{".mp4",    "video/mp4"},  
{".mpc",    "application/vnd.mpohun.certificate"},         
{".mpe",    "video/mpeg"},    
{".mpeg",   "video/mpeg"},    
{".mpg",    "video/mpeg"},    
{".mpg4",   "video/mp4"},     
{".mpga",   "audio/mpeg"},  
{".msg",    "application/vnd.ms-outlook"},  
{".ogg",    "audio/ogg"},  
{".pdf",    "application/pdf"},  
{".png",    "image/png"},  
{".pps",    "application/vnd.ms-powerpoint"},  
{".ppt",    "application/vnd.ms-powerpoint"},  
{".pptx",   "application/vnd.openxmlformats-officedocument.presentationml.presentation"},  
{".prop",   "text/plain"},  
{".rc", "text/plain"},  
{".rmvb",   "audio/x-pn-realaudio"},  
{".rtf",    "application/rtf"},  
{".sh", "text/plain"},  
{".tar",    "application/x-tar"},     
{".tgz",    "application/x-compressed"},   
{".txt",    "text/plain"},  
 {".wav",    "audio/x-wav"},  
{".wma",    "audio/x-ms-wma"},  
{".wmv",    "audio/x-ms-wmv"},  
{".wps",    "application/vnd.ms-works"},  
{".xml",    "text/plain"},  
{".z",  "application/x-compress"},  
{".zip",    "application/x-zip-compressed"},  
{"",        "*/*"}  

【文件头信息绕过】

每种类型的文件都有自己固定的文件头信息,比如GIF89a是gif图片的文件头信息,可以通过手动在脚本文件前面增加文件头的方式绕过

塒NG:png的文件头
xFFxD8:jpg的文件头
GIF89a:gif的文件头

【简要上传代码分析解释】

#$_FILES函数
$_FILES[‘upfile’][‘name’]; //客户端上传文件的原名称,不包含路径
$_FILES[‘upfile’][‘type’]; //上传文件的MIME类型
$_FILES[‘upfile’][‘tmp_name’]; //已上传文件在服务器端保存的临时文件名,包含路径
$_FILES[‘upfile’][‘error’]; //上传文件出现的错误号,为一个整数
$_FILES[‘upfile’][‘size’]; //已上传文件的大小,单位为字节

trim() 函数

移除字符串两侧的空白字符或其他预定义字符。
windiws系统下,对文件名中空格会被作为空处理,程序中的检验代码不能自动删除空格。从而绕过黑名单。

deldot($file_name)函数

去掉最后面得点
windows系统下,文件后缀名最后一个点会被自动去除,如果在上传中,没把末尾的.去除则会绕过。
例如 windows下新建一个1.php. 文件,会自动更正为1.php

【演示实验】

   本地靶场uploadlabs关卡

点击跳转https://blog.csdn.net/qq_50854790/article/details/122324209

1. php别名解析

php3、php5、phtml能解析成php文件
httpd.conf配置文件
在这里插入图片描述

2. .htaccess文件解析

1、只有apache具有此文件
2、 .htaccess文件(分布式配置文件)是针对每个目录改变配置的方法,就是把.htaccess文件放在一个目录中,其中里面的指令作用于此目录及其所有子目录。
3、上传漏洞指令:

<FilesMatch "myqf">
SetHandler application/x-httpd-php
</FilesMatch>

作用是文件名包含myqf的都会以php代码执行

3..user.ini文件解析

1、服务器脚本语言为PHP
2、服务器使用CGI/FastCGI模式
3、上传目录下要有可执行的php文件
.user.ini作用:所有的php文件都自动包含jpg文件

4、字符串::$DATA

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名

例如:"phpinfo.php::$DATA“Windows会自动去掉末尾的::$DATA变成"phpinfo.php”

在数据包里改
burp

5、一次过滤与循环过滤(递归过滤)

作用:将字符串里的php替换为空

一次过滤:1.php --> 1.[空]
1.phphpp --> 1.php

循环过滤(递归过滤)
1.php --> 1.[空]
1.phphpp --> 1.[空]

6、%00截断与0x00截断

前提:php的版本要小于5.3.4并且魔术引号必须关闭
%00:主要针对地址上的截断 (url)
0x00截断:主要针对文件命名上的截断
0x:16进制表示
00:表示0
0x00:就是代表16进制的0
有的函数在处理这个字符时,会当做结束符
%00 和 00 是一样的,只是在get提交时,经过url编码后,00就成了%00

get会自动解码一次,而post方式不行,需要手动解码
Get请求方式是优先于Post
服务端优先接收get 方式提交的参数

案例:
get url: /upload/1.php%00

post : /upload/1.php+ 解码后的%00

目录截断成1.php post 的内容自动转到1.php 里

返回路径

1.通过查看network

1.jpg 的请求 消息头
2.抓包 看返回包的路径

【演示实验】

   本地靶场uploadlabs关卡

点击跳转https://blog.csdn.net/qq_50854790/article/details/122324209

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:46:03  更:2022-03-30 18:47:25 
 
开发: 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年11日历 -2024/11/26 4:37:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码