uploads靶场通关(1-11关)

news2024/11/25 18:54:55

Pass-01(JS校验)

看题目我们准备好我们的php脚本文件,命名为1.php

上传该php文件,发现上传失败

方法一:将浏览器的JavaScript禁用

然后就能上传了 

方法二:

查看源码,发现只能上传以下形式的文件

我们将刚才的1.php的后缀改为.jpg

上传该文件并用bp抓包,send to Repeater,将其后缀改回1.php,再send即可上传成功

Pass-02(服务端(后端)验证)

还是上传1.php提示“文件类型不正确,请重新上传”

查看源码,发现本题的漏洞在于后端利用 PHP 的全局数组$_FILES()获取上传文件信息,其只检测content-type字段

而常用的content-type字段有:

image/jpeg :jpg 图片格式

image/png :png 图片格式

image/gif :gif 图片格式

text/plain :纯文本格式

text/xml : XML 格式

text/html : HTML 格式

再次用bp抓包,然后send to Repeater

将content-type字段改为image/jpeg,再点击send,上传成功

打开源文件查看是否上传成功加以验证

Pass-03(文件名后缀校验(黑名单绕过))

直接查看源码吧:

发现只是过滤了一小部分的文件后缀,而利用一些危险的文件后缀还是可以上传的

可以修改为其他的文件后缀如:.php3,.php4,.php5,.phtml,.phps等

我们上传1.php3,可以上传成功

Pass-04(文件名后缀校验(配置文件解析控制))

查看本关源代码发现他把几乎全部的文件后缀名过滤掉了,啊啊啊

但是他又貌似漏掉了.htaccess文件。。。。

那么什么是.htaccess文件呢?

htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess 文 件,可以实现:网页 301 重定向、自定义 404 错误页面、改变文件扩展名、允许/阻止特定的用户或者目录 的访问、禁止目录列表、配置默认文档等功能。

解法:上传.htaccess 解析文件,利用其配置,将白名单文件的类型解析成php文件类型。

新建一个txt文件或者php文件,写入如下代码

<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>

这段代码意思为:将服务器上的1.jpg文件解析为php文件

保存后将文件名改为.htaccsee(注意:htaccess文件不能起名字,他就是.htaccess文件,如果你将他改为4.htaccess或者其他的什么名字 是不可以的,无法解析。)

再建一个php文件,写入phpinfo()函数,保存后将后缀改为.jpg,我这里为1.jpg

准备工作都完成后,回到题目,先上传.htaccsee文件,再上传1.jpg文件

上传成功后,看不出什么

但我们访问1.jpg,发现他以php的形式显示了出来 

Pass-05 (文件名后缀校验(.user.ini解析))

还是直接看源码,非常好,他在过滤了一堆后缀名的基础上,又把上关使用的.htaccess过滤掉了 。。。

没事,我们还有方法——利用.user.ini配置文件

.user.ini比.htaccess 用的更广,不管服务器是 nginx/apache/IIS,当使用 CGI/FastCGI 来解析 php 时,php 会优先搜索目录下所有的.ini 文件,并应用其中的配置。类似于 apache的.htaccess,但语法与.htacces不同,语法跟 php.ini 一致

而php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。 但是想要引发 .user.ini 解析漏洞需要三个前提条件:

服务器脚本语言为PHP

服务器使用CGI/FastCGI模式(上网简单了解)

上传目录下要有可执行的php文件

废话不多说,开始做题:

还是新建一个txt文件或者php文件,写入如下代码:

auto_prepend_file=1.jpg

意思就是将所有的php文件都自动包含1.jpg文件。(.user.ini相当于一个用户自定义的

php.ini)

再将文件名改为.user.ini,上题的1.jpg还能用嘿嘿

那就回题目,先上传.user.ini文件,再上传1.jpg文件,后面的过程就和上一题一样了

其实还有解法二/三....:(这里是第10关解法,后关的解法前关都适用)

直接用 php. .(点空格点), 绕过上传

Pass-06(文件名后缀校验(大小写绕过))

这关连.ini都给过滤了

但但但但但是没有使用strtolower()函数,可以使用大小 写绕过黑名单 把.php 格式改为.Php 上传上去之后,就会自动解析为.php

注意:

Windows 系统下,对于文件名中的大小写不敏感。例如:test.php 和 TeSt.PHP 是一样的。

Linux 系统下,对于文件名中的大小写敏感。例如:test.php 和 TesT.php 就是不一样的。

Pass-07(文件名后缀校验(空格绕过))

又来了,又使用strtolower()函数了,大小写绕过不管用了

没关系,他未做去空格的操作->trim() ,所以还有空格绕过

Windows 系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕 过黑名单。

bp抓包,1.php后加一个空格,上传成功!

Pass-08(文件名后缀校验(点号绕过))

不出所料,trim()函数来了,空格绕过也不行了

可是他对上传的文件后缀名未做去点.的操作 ->deldot(),我们还有点号绕过

接下来就一样了,bp抓包,只需在1.php后加个.就行了!

Pass-09(文件名后缀校验(::DATA绕过))

果然,deldot()函数过滤了点号

但又对上传的文件后缀名没有做去::$DATA 处理

因此我们可以利用::$DATA后缀

Windows 系统下,如果上传的文件名为 1.php::$DATA 会在服务器上生成一个

1.php 的文件,其中内容和所上传文件内容相同,并被解析。

bp抓包,在1.php后加个::$DATA就行了

但访问1.php::$DATA是不行的,还需将 ::$DATA去掉

成功访问!

Pass-10(文件名后缀校验(拼接绕过))

::$DATA绕过不好使了,无话可说,直接上解法:

将文件名进行过滤操作后,将文件名拼接在路径后面,所以需要绕过前面的首尾去空以及去点。

bp抓包,在1.php后加. .(点空格点)就行了 

访问成功!

之前有的忘写访问结果了,除了1.php::$DATA需将 ::$DATA去掉外,都能直接访问成功哦!

Pass-11(文件名后缀校验(双写绕过))

利用 str_ireplace()将文件名中符合黑名单的字符串替换成空,总之就是前面的方法都不好使了

解决方式:利用双写黑名单字符,对字符串的一次过滤后拼接出 php,文件名.pphphp

bp抓包,1.php后缀改为.pphphp就行了 

上传成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Docker】LXC所实现的隔离性、Linux Namespace等讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

域名解析异常有哪些办法?如何实现动态域名解析?

什么是域名解析&#xff1f; 域名解析就是把域名解析成一个ip地址&#xff0c;我们大多数人都喜欢记忆域名&#xff0c;但是机器只认识IP地址&#xff0c;只要这个IP地址对应相关域名&#xff0c;这就叫域名解析。 工作中常会遇到域名解析故障&#xff0c;比如访问站点对应的…

FPGA问答系列--Vivado Schematic中的实线和虚线有什么区别?

FPGA问答系列–Vivado Schematic中的实线和虚线有什么区别&#xff1f; 前言&#xff1a;本文章为FPGA问答系列&#xff0c;我们会定期整理FPGA交流群&#xff08;包括其他FPGA博主的群&#xff09;里面有价值的问题&#xff0c;并汇总成文章&#xff0c;如果问题多的话就每周…

ChatPPT一键制作PPT,效果拉满!

&#x1f4a7; C h a t P P T 一键制作 P P T &#xff0c;效果拉满&#xff01; \color{#FF1493}{ChatPPT一键制作PPT&#xff0c;效果拉满&#xff01;} ChatPPT一键制作PPT&#xff0c;效果拉满&#xff01;&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我…

阿里云nginx配置https踩坑(配置完后访问显示无法访问此网站)

本人小前端一枚&#xff0c;最近在玩服务器部署自己的东西时踩了个坑&#xff01;&#xff01;&#xff01; server {listen 443 ssl;server_name localhost;ssl_certificate 证书.com.pem;ssl_certificate_key 证书.com.key;#后台管理静态资源存放location / { #文件目…

2023-06-04 Unity ScriptableObject2——ScriptableObject 的应用

文章目录 一、配置数据二、复用数据三、多态特性的利用四、单例模式获取数据 一、配置数据 ​ ScriptableObject 数据文件非常适合用来做配置文件&#xff1a; 配置文件的数据在游戏发布之前定规则配置文件的数据在游戏运行时只会读出来使用&#xff0c;不会改变内容在 Unity…

MPS|如何学习电路设计?帮你快速上手

​电路设计是电子工程中的重要领域之一&#xff0c;涉及到电子元件的选择、电路的设计和分析、电路板的制作等多个方面。对于初学者来说&#xff0c;学习电路设计需要掌握一定的基础知识和技能&#xff0c;同时需要有耐心和实践经验。本文将从七个方面总结如何学习电路设计&…

Vue (9)

Vue (9) 文章目录 1. 消息订阅与发布1.1 总结1.2 修改 TodoList 案例 2. 为 TodoList 添加编辑功能3. $nextTick4. 过度与动画4.1 动画效果4.2 过度效果4.3 集成第三方动画4.4 总结4.5 修改 TodoList 案例 1. 消息订阅与发布 上文我们已经将全局事件总线学完了知道了全局事件总…

day6 -- 数据的分组和描述性统计

学习内容 描述性统计函数&#xff0c;包括平均值&#xff0c;最大/小值&#xff0c;行数&#xff0c;总和使用 GROUP BY子句和HAVING子句 对数据进行分组操作 描述性统计数函数 除了上面提到的聚合函数外&#xff0c;MySQL还提供了以下其他一些常用的聚合函数&#xff1a; – …

Python学习40:维吉尼亚密码——解密

凯撒密码的加密强度是很低的&#xff0c;只需简单地统计字频就可以破译。人们在单一凯撒密码的基础上扩展出多表密码&#xff0c;称为“维吉尼亚”密码。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪…

【环境搭建】一些奇奇怪怪的环境问题

【设备信息】我的设备是4070ti&#xff0c;支持cuda12.0,但是目前用的还是11.7 1&#xff09;fatal error: cusparse.h: No such file or directory 因为cuda版本和改名的原因&#xff0c;这个在cuda版本中比较有效的解决办法是&#xff1a; sudo apt search libcusparse得到…

基于SpringBoot+Vue的自习室预订系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

C/C++开发,opencv读写图像函数详解

目录 一、cv::imread函数读取图像 1.1 imread函数 1.2 imread函数的参数解析 1.3 imread函数实践案例 1.4 编译及测试 二、cv::imwrite函数存储图像 2.1 cv::imwrite函数 2.2 imwrite函数参数解析 2.3 imwrite函数实践案例 2.4 编译及测试 一、cv::imread函数读取图像 1.1 im…

Lecture 5 Part of Speech Tagging

目录 POS application: Information Extraction 词性应用&#xff1a;信息提取 POS Open Class 开放类词性Problem of word classes: Ambiguity 词类问题&#xff1a;模糊性Tagsets 标记集Penn Treebank Tags:Derived Tags: 衍生标签Tagged Text Example 标记文本示例Reasons f…

Java 字符串基本操作

一、Java 字符串比较 1、equals用法 String类覆盖了Object类的equals()方法&#xff0c;并提供了自己的实现&#xff0c;它根据它们的内容比较两个字符串的相等性。 equals() 方法用于将字符串与指定的对象比较。 语法 public boolean equals(Object anObject)参数 anObje…

Dockerfile常用指令及其含义

编写dockerfile文件中常用指令&#xff1a; 指令说明FROM指明当前的镜像基于哪个镜像构建:LABEL标记镜像信息&#xff0c;添加元数据ARG定义构建镜像过程中使用的变量ENV指定环境变量VOLUME创建一个数据卷挂载点USER指定运行容器时的用户名或 UIDWORKDIR配置工作目录EXPOSE容器…

chatgpt赋能python:Python区分:为什么选择python?

Python区分&#xff1a;为什么选择python&#xff1f; Python是一种高级语言&#xff0c;一种功能强大且易于学习的编程语言。 它可用于各种领域&#xff0c;包括科学计算&#xff0c;Web开发和数据分析等。 Python的简单性和灵活性使其成为许多行业和开发者的首选编程语言。 …

R语言 tidyverse系列学习笔记(持续更新)

tidyverse 译 “洁净的宇宙” > “极乐净土” 以 iris 鸢尾花数据集为例 ** 查看数据集** ** 查看维度dimention** dim(iris)iris 数据集有150个对象&#xff08;observation&#xff09;&#xff0c;5列 ( Sepal.Length , Sepal.Width , Petal.Length , Petal.Width , Spe…

大疆无人机 MobileSDK(遥控器/手机端)开发 v5版<2>

前言 v5.x版本的功能与v4.x基本相同,都是获取飞机的姿态信息、获取无人机多媒体文件、操作多媒体文件、航线规划等。不过在上一章节中也大致说了一些两个版本的中API的差别,下面是根据一些API使用所完成的一些功能,因为项目原因只能提供部分代码供参考,后续如果有这方面需…

零基础开发小程序第五课-修改数据

目录 1 创建修改页面2 创建远程数据3 给组件绑定默认值4 从详情页跳转到更新页5 刷新页面总结 新手开发往往对修改和删除的功能不是特别理解。我们先按照开发的思路捋一下逻辑&#xff0c;如果想修改数据&#xff0c;首先需要知道修改哪一条数据&#xff0c;然后要把上一次存储…