【Basic】Upload-Labs-Linux

文章目录

  • 前言
  • Pass-01
  • Pass-02
  • Pass-03
  • Pass-04
  • Pass-05
  • Pass-06
  • Pass-07
  • Pass-08
  • Pass-09
  • Pass-10
  • Pass-11
  • Pass-12
  • Pass-13
  • Pass-14
  • Pass-15
  • Pass-16
  • 解题感悟


前言

美好的一天从刷题开始


Pass-01

在这里插入图片描述
在这里插入图片描述
我淦20道题???一道一道来吧

先看第一道题在这里插入图片描述
先在home里搞一个图片和一个php文件在这里插入图片描述
上传个图片试试在这里插入图片描述
再上传个php文件试试在这里插入图片描述
翻一翻检查发现了一个checkFile函数在这里插入图片描述
直接删掉return checkFile()试试
在这里插入图片描述
在这里插入图片描述
上传成功
在这里插入图片描述
看看提示吧在这里插入图片描述
很好,和咱们的尝试一样

Pass-02

界面和第一题的一样
在这里插入图片描述

用第一题的方法试试,发现不行意料之中在这里插入图片描述
抓包试试,burp启动!启动后切换代理

先新建一个模拟的php,扩展名伪装成jpg请添加图片描述

拦截打开然后上传伪装成图片的php文件在这里插入图片描述

把.jpg改成.php,然后放包
请添加图片描述

拿下
在这里插入图片描述
看一看提示叭在这里插入图片描述

emmmmm差不多,那咱们根据提示的方法再做一遍叭

拦截,上传php在这里插入图片描述

Content-Type中改成image/jpeg请添加图片描述

改完后放包在这里插入图片描述

搞定
在这里插入图片描述

Pass-03

第三题先看提示在这里插入图片描述
禁止asp,aspx,php,jsp后缀,这是不是意味着其他的都可以,咱们试一下

因为我懒得建文件了,所以我就直接用burp模拟了

改成php5试试请添加图片描述

成功在这里插入图片描述

Pass-04

在这里插入图片描述
这道题有点像第三题的升级版
细节的朋友立马就会想到.htaccess。没错和第三题的方法一样拦截,抓包,修改,放包。尝试一下
在这里插入图片描述

成功在这里插入图片描述

Pass-05

在这里插入图片描述
6…这下连.htaccess也禁了,这就过分了

既然这样咱们就只能直接代码审计了在这里插入图片描述

$is_upload = false;  // 初始化上传标志,默认为false
$msg = null;  // 初始化消息变量,默认为null

// 检查是否有表单提交
if (isset($_POST['submit'])) {
    // 检查上传路径是否存在
    if (file_exists(UPLOAD_PATH)) {
        // 定义不允许上传的文件扩展名
        $deny_ext = array(
            ".php", ".php5", ".php4", ".php3", ".php2", 
            ".html", ".htm", ".phtml", ".pht", ".pHp", 
            ".phP", ".pHP", ".PhP", ".pHp3", ".pHp2", 
            ".Html", ".Htm"
        );
        
        // 获取上传文件的原始名称并去除空白
        $file_name = trim($_FILES['upload_file']['name']);
        // 删除文件名末尾的点
        $file_name = deldot($file_name);
        // 获取文件扩展名
        $file_ext = strrchr($file_name, '.');
        // 去除扩展名中的特殊字符串
        $file_ext = str_ireplace(':$DATA', '', $file_ext);
        // 去除空白字符
        $file_ext = trim($file_ext);

        // 检查文件扩展名是否在禁止列表中
        if (!in_array($file_ext, $deny_ext)) {
            // 获取上传文件的临时路径
            $temp_file = $_FILES['upload_file']['tmp_name'];
            // 生成保存路径和文件名,包含当前日期和随机数
            $img_path = UPLOAD_PATH . '/' . date("YmdHis") . rand(1000, 9999) . $file_ext;
            
            // 尝试将文件从临时目录移动到目标目录
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;  // 上传成功,设置标志为true
            } else {
                $msg = '上传出错!';  // 移动文件失败,设置错误消息
            }
        } else {
            $msg = '此文件类型不允许上传!';  // 文件扩展名在禁止列表中,设置错误消息
        }
    } else {
        $msg = UPLOAD_PATH . ' 文件夹不存在,请手工创建!';  // 上传路径不存在,设置错误消息
    }
}

通过分析咱们可以发现他并没有对扩展名的大小写进行统一转换,这不就意味着我把.php改成。PHP或者PHp就ok了,尝试一下

还是那套步骤试一下
在这里插入图片描述
成功在这里插入图片描述

Pass-06

在这里插入图片描述

目测可以用第四题的方法破解,试一试.htaccess在这里插入图片描述
好吧不行…在这里插入图片描述

那就浅浅审计一下代码叭在这里插入图片描述

$is_upload = false;  // 初始化上传标志,默认情况下设置为false
$msg = null;  // 初始化消息变量,默认情况下设置为null

// 检查表单是否通过POST方法提交
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 = $_FILES['upload_file']['name'];
        // 删除文件名末尾的点
        $file_name = deldot($file_name);
        // 获取文件扩展名
        $file_ext = strrchr($file_name, '.');
        // 将扩展名转换为小写
        $file_ext = strtolower($file_ext);
        // 去除字符串::$DATA
        $file_ext = str_ireplace('::$DATA', '', $file_ext);

        // 检查文件扩展名是否在禁止列表中
        if (!in_array($file_ext, $deny_ext)) {
            // 获取上传文件的临时路径
            $temp_file = $_FILES['upload_file']['tmp_name'];
            // 生成保存路径和文件名,包含当前日期和随机数
            $img_path = UPLOAD_PATH . '/' . date("YmdHis") . rand(1000, 9999) . $file_ext;

            // 尝试将文件从临时目录移动到目标目录
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;  // 上传成功,设置标志为true
            } else {
                $msg = '上传出错!';  // 移动文件失败,设置错误消息
            }
        } else {
            $msg = '此文件不允许上传';  // 文件扩展名在禁止列表中,设置错误消息
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';  // 上传路径不存在,设置错误消息
    }
}

分析可发现限制了大小写,但是没有对空格进行过滤,那咱们加个空格不就行了。试一试
在这里插入图片描述
成功
在这里插入图片描述

Pass-07

在这里插入图片描述
全禁止了?尊嘟假嘟,不信。我就要找一找试试先不看源码在这里插入图片描述
信了…

老老实实审计代码吧在这里插入图片描述

$is_upload = false;  // 初始化上传标志,默认情况下设置为false
$msg = null;  // 初始化消息变量,默认情况下设置为null

// 检查表单是否通过POST方法提交
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_ext = strrchr($file_name, '.');
        // 将扩展名转换为小写
        $file_ext = strtolower($file_ext);
        // 去除扩展名中的特殊字符串
        $file_ext = str_ireplace('::$DATA', '', $file_ext);
        // 去除空白字符
        $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;  // 上传成功,设置标志为true
            } else {
                $msg = '上传出错!';  // 移动文件失败,设置错误消息
            }
        } else {
            $msg = '此文件类型不允许上传!';  // 文件扩展名在禁止列表中,设置错误消息
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';  // 上传路径不存在,设置错误消息
    }
}

分析后可以发现他没有过滤末尾的.。也就是说在扩展名的末尾加个.就好了。

试一下在这里插入图片描述

成功在这里插入图片描述

Pass-08

在这里插入图片描述

咋和第五题的提示一样,话不多说直接上源码在这里插入图片描述

$is_upload = false;  // 初始化上传标志,默认情况下设置为false
$msg = null;  // 初始化消息变量,默认情况下设置为null

// 检查表单是否通过POST方法提交
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 = trim($file_ext);

        // 检查文件扩展名是否在禁止列表中
        if (!in_array($file_ext, $deny_ext)) {
            // 获取上传文件的临时路径
            $temp_file = $_FILES['upload_file']['tmp_name'];
            // 生成保存路径和文件名,包含当前日期和随机数
            $img_path = UPLOAD_PATH . '/' . date("YmdHis") . rand(1000, 9999) . $file_ext;

            // 尝试将文件从临时目录移动到目标目录
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;  // 上传成功,设置标志为true
            } else {
                $msg = '上传出错!';  // 移动文件失败,设置错误消息
            }
        } else {
            $msg = '此文件类型不允许上传!';  // 文件扩展名在禁止列表中,设置错误消息
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';  // 上传路径不存在,设置错误消息
    }
}

可以发现本题没有去除字符串::$DATA,那咱们就加上试一试
在这里插入图片描述
成功
在这里插入图片描述

Pass-09

在这里插入图片描述
代码审计在这里插入图片描述

$is_upload = false;  // 初始化上传标志,默认情况下设置为false
$msg = null;  // 初始化消息变量,默认情况下设置为null

// 检查表单是否通过POST方法提交
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);
        // 去除特殊字符串 '::$DATA'
        $file_ext = str_ireplace('::$DATA', '', $file_ext);
        // 去除扩展名首尾的空白字符
        $file_ext = trim($file_ext);

        // 检查文件扩展名是否在禁止列表中
        if (!in_array($file_ext, $deny_ext)) {
            // 获取上传文件的临时路径
            $temp_file = $_FILES['upload_file']['tmp_name'];
            // 生成保存路径和文件名,包含当前日期和随机数
            $img_path = UPLOAD_PATH . '/' . date("YmdHis") . rand(1000, 9999) . $file_ext;

            // 尝试将文件从临时目录移动到目标目录
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;  // 上传成功,设置标志为true
            } else {
                $msg = '上传出错!';  // 移动文件失败,设置错误消息
            }
        } else {
            $msg = '此文件类型不允许上传!';  // 文件扩展名在禁止列表中,设置错误消息
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';  // 上传路径不存在,设置错误消息
    }
}

分析发现过滤了大小写,空格,点以及数据流 , 但只过滤了一遍点和空格 , 我们在文件后缀名添加空格点空格点 ,或者是点空格点来绕过黑名单在这里插入图片描述
搞定
在这里插入图片描述

Pass-10

在这里插入图片描述
会去除扩展名的话直接双写试试在这里插入图片描述

成功在这里插入图片描述

Pass-11

在这里插入图片描述
路径,大概率是直接%00截断

看一看源码叭在这里插入图片描述

用的是白名单那咱们就直接试一试在这里插入图片描述
在这里插入图片描述
本题要求php版本小于等于5.3.4,否则会显示上传失败

Pass-12

在这里插入图片描述
emmm直接代码审计吧
在这里插入图片描述
依旧是白名单,只不过这个是post,和上一个操作方式一样。
在这里插入图片描述
在这里插入图片描述
版本问题所以会显示上传失败

Pass-13

在这里插入图片描述
先建一个php文件输入内容

<?php 
	echo "Are you OK";
?>

先自己生成一个图片马在Linux上需要用cat指令

cat 222.jpg 111.php > 333.jpg
cat 222.jpg 111.php > 333.png
cat 222.jpg 111.php > 333.gif

在这里插入图片描述
直接上传图片然后可以进入burp看一看抓到的这个post包进行分析,可以看到我在php里写的内容在这里插入图片描述
完成

Pass-14

在这里插入图片描述

和上一题一样直接上传图片马
检验方法和上题一样
结案下一题

Pass-15

在这里插入图片描述
和上题一样,直接上传图片马
检验方法和上题一样
这三题虽然步骤一样,但是考点是不一样

Pass-16

在这里插入图片描述
代码审计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

$is_upload = false;  // 初始化上传标志,默认情况下设置为false
$msg = null;  // 初始化消息变量,默认情况下设置为null

if (isset($_POST['submit'])){  // 检查表单是否通过POST方法提交
    // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径
    $filename = $_FILES['upload_file']['name'];
    $filetype = $_FILES['upload_file']['type'];
    $tmpname = $_FILES['upload_file']['tmp_name'];

    // 定义目标路径
    $target_path = UPLOAD_PATH . '/' . basename($filename);

    // 获得上传文件的扩展名
    $fileext = substr(strrchr($filename, "."), 1);

    // 判断文件后缀与类型,合法才进行上传操作
    if (($fileext == "jpg") && ($filetype == "image/jpeg")) {
        if (move_uploaded_file($tmpname, $target_path)) {
            // 使用上传的图片生成新的图片
            $im = imagecreatefromjpeg($target_path);

            if ($im == false) {
                $msg = "该文件不是jpg格式的图片!";
                @unlink($target_path);
            } else {
                // 给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()) . ".jpg";
                // 显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH . '/' . $newfilename;
                imagejpeg($im, $img_path);
                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }
    } else if (($fileext == "png") && ($filetype == "image/png")) {
        if (move_uploaded_file($tmpname, $target_path)) {
            // 使用上传的图片生成新的图片
            $im = imagecreatefrompng($target_path);

            if ($im == false) {
                $msg = "该文件不是png格式的图片!";
                @unlink($target_path);
            } else {
                // 给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()) . ".png";
                // 显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH . '/' . $newfilename;
                imagepng($im, $img_path);
                @unlink($target_path);
                $is_upload = true;               
            }
        } else {
            $msg = "上传出错!";
        }
    } else if (($fileext == "gif") && ($filetype == "image/gif")) {
        if (move_uploaded_file($tmpname, $target_path)) {
            // 使用上传的图片生成新的图片
            $im = imagecreatefromgif($target_path);
            if ($im == false) {
                $msg = "该文件不是gif格式的图片!";
                @unlink($target_path);
            } else {
                // 给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()) . ".gif";
                // 显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH . '/' . $newfilename;
                imagegif($im, $img_path);
                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }
    } else {
        $msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";
    }
}

图片进行二次渲染处理,这样的话就算上传图片马内容也会被重写啊…
是我太菜了没有一点思路
于是我在网上找了一些相关文章发现两篇不错的教程:
https://www.cnblogs.com/forforever/p/13191999.html

https://xz.aliyun.com/t/2657?time__1311=n4%2BxnieDw4uneG%3DD%2FWT4BKg34fobDGqIhD

初学者能力有限请见谅


解题感悟

掌握了很多思路与方法,这个靶场涵盖了常见的漏洞,就算我不理解网上的教程咋都是在本地部署的环境,让我这个在kali上进行解题的格格不入。。。。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蜂窝物联四情监测:助力农业升级,科技赋能打造丰收新篇章!

农业四情指的是田间的虫情、作物的苗情、气候的灾情和土壤墒情。“四情”监测预警系统的组成包括管式土壤墒情监测站、虫情测报灯、气象站、农情监测摄像机&#xff0c;可实时监测基地状况,可以提高监测的效率和准确性&#xff0c;为农业生产提供及时、科学的数据支持&#xff…

碌时刻必备!微信自动回复让你告别消息堆积

在忙碌的时候&#xff0c;我们往往会面临消息堆积如山的情况。无法及时回复消息不仅容易造成交流障碍&#xff0c;还可能错过重要的机会。 但是现在&#xff0c;有一个神奇的工具——个微管理系统&#xff0c;可以帮助我们轻松应对这个问题 &#xff0c;实现微信自动回复。 首…

基于YOLOv8+PySide6的快递分类管理系统

1、背景 随着电子商务的飞速发展&#xff0c;快递行业所承受的数据处理需求愈发庞大。在这样的背景下&#xff0c;传统的手工分类方法已经显得力不从心&#xff0c;因其不仅耗时耗力&#xff0c;还存在着易出错的隐患。因此&#xff0c;迫切需要研发出一套高效而准确的自动化系…

解决问题:Collecting package metadata (current_repodata.json)--faile

目录 解决步骤&#xff1a; 1、创建pip.ini文件&#xff1a;winR对话框中复制输入&#xff1a;%APPDATA%&#xff0c;然后回车。 2、conda添加清华源&#xff1a; 3、这些创建完&#xff0c;重启电脑就可以创建你的虚拟环境了 4、利用镜像源下载库&#xff1a; 5、查看to…

F.费用报销【蓝桥杯】/01背包

费用报销 01背包 思路&#xff1a;f[i][j]表示前i个票据在容量为j的背包中能占的最大值。 #include<iostream> #include<algorithm> using namespace std; int day[13]{0,31,28,31,30,31,30,31,31,30,31,30,31}; int dp[1005][5005]; int s[13]; int last[1005];…

Vue从入门到实战Day07

一、vuex概述 目标&#xff1a;明确vuex是什么&#xff0c;应用场景&#xff0c;优势 1. 是什么&#xff1a; vuex是一个vue的状态管理工具&#xff0c;状态就是数据。 大白话&#xff1a;vuex是一个插件&#xff0c;可以帮助我们管理vue通用的数据&#xff08;多组件共享的…

01.msf

文章目录 永恒之蓝下载msfconsolemsfvenom 永恒之蓝 下载 msdn.itellyou.cn msfconsole M e t a s p l o i t C y b e r M i s s i l e C o m m a n d Metasploit Cyber Missile Command MetasploitCyberMissileCommand 的简称 search ms17_010 use 0 或者 use exploit/wind…

WordPress国外超人气主题Vikinger汉化版

WordPress国外超人气主题Vikinger汉化版 前言效果图安装教程领取主题下期更新预报 前言 我们在上一个教程已经学过如何安装WordPress&#xff0c;所以现在不用多说。 效果图 安装教程 下载后先本地解压&#xff0c;找到vikinger.zip文件&#xff0c;上传安装并启用主题。 访…

什么是SSL证书?如何选择SSL证书?

在浏览网站的时候&#xff0c;你会不会有这样一些疑问。 为什么有的网站是http://开头&#xff0c;有的却是https://&#xff1f;它们有什么区别吗&#xff1f; 经常访问的网站&#xff0c;浏览器突然提示“安全证书过期”&#xff0c;提醒你不要浏览该网址&#xff1f; 这一切…

算法打卡 Day13(栈与队列)-滑动窗口最大值 + 前 K 个高频元素 + 总结

文章目录 Leetcode 239-滑动窗口最大值题目描述解题思路 Leetcode 347-前 K 个高频元素题目描述解题思路 栈与队列总结 Leetcode 239-滑动窗口最大值 题目描述 https://leetcode.cn/problems/sliding-window-maximum/description/ 解题思路 在本题中我们使用自定义的单调队列…

腾讯面试:如何提升Kafka吞吐量?

面试题大全&#xff1a;www.javacn.site Kafka 是一个分布式流处理平台和消息系统&#xff0c;用于构建实时数据管道和流应用。它最初由 LinkedIn 开发&#xff0c;后来成为 Apache 软件基金会的顶级项目。 Kafka 特点是高吞吐量、分布式架构、支持持久化、集群水平扩展和消费组…

【JavaScript】初识 Promise

出现原由 先看一个例子&#xff1a; 模拟发送表白信息&#xff0c;如果一个失败&#xff0c;那么再给其他人发送&#xff0c;这时就相当于在失败回调函数中套了一层回调&#xff1b;如果后续还有多个表白对象&#xff0c;那么将一层一层地嵌套下去&#xff0c;也就是回调地狱…

牛客NC367 第K个n的排列【困难 dfs,全排列问题 Java/Go/PHP/C++】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/1595969179464e4c940a90b36abb3c54 思路 全排列问题本文提供的答案在力扣同一道题60. 排列序列&#xff0c;超时了但是截止文章发表日&#xff0c;牛客上是能通过全部测试用例的Java代码 import java.util.*;pu…

【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略

【面试干货】事务的并发问题&#xff08;脏读、不可重复读、幻读&#xff09;与解决策略 一、脏读&#xff08;Dirty Read&#xff09;二、不可重复读&#xff08;Non-repeatable Read&#xff09;三、幻读&#xff08;Phantom Read&#xff09;四、总结 &#x1f496;The Begi…

飞速提升中文打字,Master of Typing in Chinese for Mac助你一臂之力

Master of Typing in Chinese for Mac是一款专为Mac用户设计的中文打字练习软件。其主要功能包括帮助用户提高打字速度和准确性&#xff0c;培养盲打技巧&#xff0c;使键盘输入更加高效。 打字速度提升&#xff1a;软件提供多种练习模式&#xff0c;如字母、特殊字符、单词和…

MATLAB:插值函数之interp与griddata

MATLAB 提供了多种插值函数来处理不同维度的数据。其中&#xff0c;interp1、interp2 和 griddata 是常用的插值函数&#xff0c;分别用于一维、二维和多维&#xff08;不规则&#xff09;数据的插值。 之前有对interp1进行过详细介绍&#xff0c;如需详细了解&#xff0c;请查…

非等值连接、等值连接、自然连接

目录 一、笛卡尔积 二、三种连接的关系 三、非等值连接 四、等值连接 五、自然连接 一、笛卡尔积 要理解非等值连接、等值连接、自然连接首先要理解笛卡尔积。 学过《离散数学》的应该很熟悉笛卡尔积。 简单来说&#xff0c;就是有两个集合&#xff0c;其中一个集合中的元…

基于HTML5和CSS3搭建一个Web网页(二)

倘若代码中有任何问题或疑问&#xff0c;欢迎留言交流~ 网页描述 创建一个包含导航栏、主内容区域和页脚的响应式网页。 需求: 导航栏: 在页面顶部创建一个导航栏&#xff0c;包含首页、关于我们、服务和联系我们等链接。 设置导航栏样式&#xff0c;包括字体、颜色和背景颜…

什么是预训练模型

如果你要做一个计算机视觉的应用&#xff0c;相比于从头训练权重&#xff0c;或者说从随机初始化权重开始&#xff0c;如果你下载别人已经训练好网络结构的权重&#xff0c;通常能够进展得相当快&#xff0c;可以用这个作为预训练模型&#xff0c;然后转换到你感兴趣的任务上。…

Linux虚拟主机中如何创建文件和文件夹

我想创建一个新的文件夹&#xff0c;由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板&#xff0c;但是不知道如何在cPanel上操作创建文件&#xff0c;因为也是对于Hostease主机产品不是很了解&#xff0c;因此联系Hostease的咨询了Hostease技术支持&am…