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通关指南(下) 11-20 -> 正文阅读

[PHP知识库]Upload-labs通关指南(下) 11-20

承接上篇,这次我们继续做下半部分。

有些题目有其他做法是针对于windows系统特性的,并不能在linux上奏效,因此不在考虑范围之内。

Pass-11

制作图片马直接上传

copy a.jpg /a + b.php /b c.jpg

或者使用%00截断
在这里插入图片描述

Pass-12

同11,将%00进行url编码

Pass-13

制作图片马进行上传

Pass-14

直接上传前面题目用过的图片马提示文件类型未知,此时我们的抓个包看看情况
在这里插入图片描述

发现并不是MIME拦截,猜测是检测文件头,我们在文件内容前加上GIF89a伪装直接绕过。
在这里插入图片描述

Pass-15

方法同14

Pass-16

经过上面两题的操作之后仍然提醒我们不是jpg格式的文件。怀疑不止检测了文件头,还检测了文件内容。初步怀疑是文件内容被识别过滤。尝试上传一个空内容的图片马,仍然不可行。接着我们分析空内容的图片马和普通图片的区别,判断是对图片进行了二次压缩。我们找一个已经经过二压但仍然存在木马的图片进行上传直接绕过。

Pass-17

此题可以直接用图片马搞定。
但是我们看这道题的提示,其实并不是让我们用这种方法。提示我们进行代码审计,通过查看提供的源代码,发现使用ulink删除文件,流程:先让你传文件,传到服务器上了,再进行判断,不符合就删除。
因此我们竞争上传。丢进burp进行暴力上传,让木马文件来不及被删除。

Pass-18

图片马也能搞定。
经代码审计,如果看到代码中出现.7z .zip .rar .gz这种压缩类型的文件,php有可能会自动解压
如果发现目标需要给文件重命名,可以使用竞争上传的原理,快速提交x.php.7z会来不及被重命名,并且可以被当作php执行。

Pass-19

%00截断

Pass-20

此题来源CTF,源代码如下

$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
    //检查MIME
    $allow_type = array('image/jpeg','image/png','image/gif');
    if(!in_array($_FILES['upload_file']['type'],$allow_type)){
        $msg = "禁止上传该类型文件!";
    }else{
        //检查文件名
        $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
        if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

        $ext = end($file);
        $allow_suffix = array('jpg','png','gif');
        if (!in_array($ext, $allow_suffix)) {
            $msg = "禁止上传该后缀文件!";
        }else{
            $file_name = reset($file) . '.' . $file[count($file) - 1];
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $msg = "文件上传成功!";
                $is_upload = true;
            } else {
                $msg = "文件上传失败!";
            }
        }
    }
}else{
    $msg = "请选择要上传的文件!";
}

这道题是一个比较简单的代码审计,发现验证了MIME,文件后缀名。
首先end函数取post传参数组中的最后一个值,

$file_name = reset($file) . '.' . $file[count($file) - 1]

我们可以post一个参数名为一个[0]一个[2],然后 file[count(file) - 1]就为空,[file_name最终就为reset(file)即$file[0],就可以绕过判断。

总结

文件上传在实际应用过程中并没有源代码给你参考,需要根据错误提示和试错来摸清waf的规则,图片马相对来说是一个比较简单和奏效的方法,我们一般可以通过MIME绕过、修改文件头、后缀、内容免杀来绕过大多数的过滤。但是单纯的文件上传常需要配合文件包含来进行更近一步的操作。

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

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