【Basic】Upload-Labs-Linux

news2025/3/16 2:31:32

文章目录

  • 前言
  • 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上进行解题的格格不入。。。。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于open3d对kitti数据集检测结果可视化

前言 KITTI数据集是自动驾驶和计算机视觉领域中一个广泛使用的基准数据集&#xff0c;它提供了丰富的传感器数据&#xff0c;包括激光雷达、相机和GPS等。Open3D是一个功能强大的3D数据处理和可视化库&#xff0c;支持多种3D数据格式。本文将介绍如何使用Open3D对KITTI数据集的…

9.Docker网络

文章目录 1、Docker网络简介2、常用基本命令3、网络模式对比举例3.1、bridge模式3.2、host模式3.3、none模式3.4、container模式3.5、自定义网络 1、Docker网络简介 作用&#xff1a; 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接进行网络通信而不受到影…

PY32F003+RTL8710(AT) 实现获取天气情况

一、RTL8710主要AT指令 1、ATSR&#xff1a;模块重启 2、ATSE1&#xff1a;开启回显 3、ATPW1&#xff1a;station模式 4、ATPNssid,password,,&#xff1a;连接到AP 5、ATPK1&#xff1a;设置自动接收 6、ATPC0,v1.yiketianqi.com,80&#xff1a;与网站建立TCP连接 7、ATPT125…

USART串口通信(stm32)

一、串口通信 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 STM32F103C8T6 USART资源&#xff1a; USART1、 USART2、 USART3 自带波特率发生器&…

基于Android studio 使用SQLite数据库完成登录注册功能——保姆级教程

&#x1f345;文章末尾有获取完整项目源码方式&#x1f345; 点击快捷传送地址&#xff1a; 保姆级教学——制作登陆注册功能页面 目录 一、准备工作 二、创建相关文件 三、页面布局 四、DabaHelper帮助类的编写 五、RegisterActivity注册页面 六、LoginActivity登录页面…

【Kafka】消息的顺序性、可靠性、幂等性

目录 消息顺序性消息可靠性生产者丢失消息消费者丢失消息Kafka丢失消息 消息幂等性 消息顺序性 消息追加到partition尾部&#xff0c;单个partition是有序的&#xff0c;但多个partition如何进行有序的获取一些消息&#xff1f; 解决方案 一个topic只设置一个partition&…

深入了解Socket套接字

目录 一、引入&#x1f64c; 1、概念 &#x1f389; 2、分类&#x1f389; Socket 套接字主要针对传输层协议分为流套接字、数据报套接字、原始套接字&#xff08;了解即可&#xff09;三类。 1&#xff09;流套接字&#xff1a;使用传输层TCP协议 2&#xff09;数据报套…

基于Matlab使用BP神经网络进行电力系统短期负荷预测

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 电力系统的短期负荷预测对于电力调度和能源管理具有至关重要的作用。通过准确地预测电力负荷&…

代码随想录算法训练营第三十七天|435. 无重叠区间、763.划分字母区间、56. 合并区间、738.单调递增的数字、968.监控二叉树

435. 无重叠区间 文档讲解&#xff1a;代码随想录 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 本道题与上个题目相似&#xff0c;都是求重叠区间 统计重叠区间的个数&#xff0c;减去重叠区间的个数就是无重叠区间了 主要就是为了让区间尽可能的重叠。&a…

HTML5新特性、JS【初识JS 、JS核心语法】--学习JavaEE的day47

day47 HTML5新特性 定义文档类型 在文件的开头总是会有一个标签 语言文档类型声明方式html4<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html5<!DOCTYPE html> 新增语义化标签 理解&…

SpringBoot + MybatisPlus

SpringBoot MybatisPlus 整合记录 1. 硬件软件基本信息2. 相关链接3. 通过idea快速生成一个Springboot项目4. 启动报错问题解决问题一&#xff1a;Springboot启动的时候报错提示 “没有符合条件的Bean关于Mapper类型”问题二&#xff1a;启动的时候提示需要一个Bean&#xff0…

民国漫画杂志《时代漫画》第16期.PDF

时代漫画16.PDF: https://url03.ctfile.com/f/1779803-1248612470-6a05f0?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

Jenkins在windows上进行安装

今天为了实现jmeter接口测试脚本的持续性集成安装了jenkins&#xff0c;主要记录jenkins的安装和端口的修改。 前提条件&#xff1a;安装了jdk&#xff0c;我本机安装的jdk1.8。 1.下载jenkins安装包 安装jenkins我们需要先下载安装包&#xff0c;可以通过下面的链接进行下载&a…

深入理解内联函数(C语言)

目录 1.什么是内联函数2.内联函数与宏3.编译器对内联函数的处理4.参考文献 1.什么是内联函数 很多人都会知道&#xff0c;可以将比较小的函数写成内联函数的形式&#xff0c;这样会节省函数调用的开销&#xff0c;具体是什么样的开销呢&#xff1f; 一个函数在执行过程中&…

低利率之后如何选择?以日本养老金为例

天风证券认为&#xff0c;日本养老金资产配置行为具备的关键特征包括&#xff1a;海外资产占比上升、日元境内资产占比下降&#xff1b;权益类&#xff08;包括境内和境外&#xff09;占比上升&#xff0c;等等。 日本从1990年代开始陷入低增长、低通胀的局面&#xff0c;我们以…

解决win系统msvcp140.dll丢失的多种常用方法,亲测有效!

msvcp140.dll 是一个重要的Windows系统文件&#xff0c;属于Microsoft Visual C Redistributable runtime components的一部分&#xff0c;特别与Visual Studio 2015及之后版本编译的C应用程序相关联。这个动态链接库&#xff08;DLL&#xff09;文件包含了一系列C标准库的功能…

好用的window粘贴板

可以设置指定的快捷键&#xff0c;在需要使用最近复制的记录时快速的复用 -> Ditto。 选择Download即可 地址&#xff1a;Ditto clipboard manager (sourceforge.io)https://ditto-cp.sourceforge.io/

VUE3+Vite+vant4从零开始构建前端项目

VUE3Vitevant4从零开始构建前端项目 1. 环境准备Node.js 安装 2. Vite 构建项目3. 集成Vant41. 安装Vant 组件2. 引入组件3. 使用vant按钮组件 1. 环境准备 Node.js 安装 Node.js官网地址&#xff1a;https://nodejs.p2hp.com/ 下载最新的版本&#xff0c;下载文件为msi结尾的…

用本地大模型(llama3)进行数据分类标记|LLM 用例

001&#xff5c;背景 这是我最新发布的导航站点 https://aiwith.me 这个站点由于第一版数据来源于第三方&#xff0c;只有站点基础数据&#xff0c;没有对数据进行分类&#xff0c;最近站点上线了&#xff0c;主体框架都搭建完成了&#xff0c;这才有空去对数据做分类. 目前的…

Android kotlin协程

说明 可代替线程整异步可控制&#xff0c;灵活 &#xff08;控制优先级&#xff0c;内存占用等&#xff09;速度快 效率高有数量上限 使用 runBlocking 一般用于测试 不建议使用GlobalScope.launch 全局的 生命周期跟随application 不建议使用CoroutineScope(job) 用 基本使…