EdgeOne安全专项实践:上传文件漏洞攻击详解与防范措施
靶场搭建
当我们考虑到攻击他人服务器属于违法行为时,我们需要思考如何更好地保护我们自己的服务器。为了测试和学习,我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料,供大家学习和参考,也可以自行探索相关内容。
使用腾讯云轻量应用服务器的Linux版本时,考虑到环境要求较为严格,自行搭建可能存在诸多错误。可以简单地通过拉取他人封装好的docker镜像来快速部署。
docker pull c0ny1/upload-labs
docker run -d -p 8289:80 c0ny1/upload-labs
在启动之后,请务必前往腾讯云控制台进行防火墙规则的配置,否则可能无法正常访问。你可以使用自己配置的IP地址和端口号替换访问地址:http://ip:8289。
系统可以正常启动。然而,当尝试上传文件时,系统会提示找不到所需的upload目录。为了解决这个问题,需要通过docker容器控制台手动新增一个upload目录。
进去之后执行下命令:
mkdir upload
chmod 777 upload
当下一切运行正常,靶场已成功搭建!请牢记,在学习完成后,请勿攻击他人的服务器。这一点至关重要,切记、切记、切记。
文件上传漏洞
靶场共设有20个关卡,每一个关卡都代表一个不同的漏洞案例。在这里,我将选择几个典型的案例与大家分享和学习。那么,我们现在就开始吧!
upload-labs靶场攻略
为了避免长篇文本对大家造成干扰,我已经准备了一张简明的流程图,帮助大家快速理解。请大家先看一下这张图,相信你们会觉得一切都变得非常简单。现在我们准备出发了,请系好安全带。
接下来,我们的所有任务都依赖于上传一个或多个文件来访问服务器配置信息。攻击脚本的设计也极其简单,其目标同样明确:只需通过其他途径访问我们的攻击脚本并成功执行即可。
<?php
phpinfo();
?>
当我们谈论获取信息的用处时,是否可以用于攻击?实际上,我们的主要目的是执行脚本。对于脚本的内容并不重要,关键是能够顺利执行。你可以随意替换脚本的语句,例如像蚁剑的一句话脚本来获取shell。这里只是为了演示攻击的目的而已。
下面我们开始讲解一下如何使用靶场,请注意每个页面都配备了查看源码和查看提示的功能。如果查看源码后仍不清楚如何进行攻击,可以根据提示逐步闯关。那么,让我们开始吧。
前端页面校验漏洞
我们先看下源码:
当我们审视这段代码时,可以注意到,这里仅仅是在前端进行了一个基本的后缀校验。
那么,我们可以选择在不依赖于工具的情况下,通过修改前端代码以移除这一验证步骤来实现上传,或者手动修改请求以将文件后缀改为.php的方式来进行。我们可以先从简单的方法开始。
接下来,进行删除操作并保存文件,随后再次上传我们的脚本文件。
请保存更改后,确保刷新页面,以便接口能够识别我们上传的以.php结尾的文件。
由于这并非一张图片,因此它无法显示。因此,请右键复制图片路径以查看。操作已成功执行。
后端校验文件类型漏洞
当然,即使是最差劲的公司也不能仅仅依赖前端进行校验,因此第二个阶段就开始涉及后端操作。现在我们继续查看源代码;
后端的主要功能是获取上传文件的类型。要修改文件类型,我们需要使用Burp Suite工具进行拦截。仅仅改变文件后缀是不够的,因为这里传输的文件类型是通过Content-Type标头传递的,具体来说是application/octet-stream
。
当系统后台基于文件类型进行判断时,我们只需调整文件类型以符合后台校验的要求,具体如下所示:
不出所料,我们依然会发现上传成功的情况。
剩下的步骤是右键点击打开图像文件的地址。在接下来的关卡中,我们不再需要演示查看PHP信息,只需通过验证即可确保我们的代码成功运行。
老版本文件后缀
这一关,如果发现无论如何都无法有效进行校验,那么最好的做法是直接限制可上传文件的后缀名。然而,单纯依赖文件后缀名来进行限制也存在潜在的安全隐患。让我们深入分析一下这个问题。
在早期的Web开发阶段,PHP文件常以.php3结尾。这是因为旧版PHP仅支持.php3后缀,而不直接支持.php。尽管现代PHP版本不再强制要求特定的文件后缀,仍有一些网站因为历史或兼容性原因仍在使用.php3后缀。为了支持这些老版本网站,Apache默认配置支持解析.php3后缀的PHP文件。
现在问题就变得非常简单了,我们只需上传那些不在后缀限制数组中的文件,然后一切搞定。
利用Apache配置文件
当谈到上述情况时,一些人可能已经认识到,不再可以随意使用简单的文件后缀名。我需要全面审查并加强这方面的限制,这样我们就进入了第四阶段。现在让我们来仔细查看源代码。
当然,我们不必局限于上传 PHP 文件。这次,我们可以利用另一个配置文件的漏洞进行攻击。
.htaccess
是一个用于配置 Apache Web 服务器的配置文件,其名称是 "hypertext access" 的缩写。它允许网站管理员在没有修改主配置文件(如 httpd.conf
)的情况下,通过在网站根目录或特定目录下创建 .htaccess
文件来进行配置和控制网站的行为。
.htaccess
文件可以包含各种指令和规则,用于控制网站的访问权限、重定向 URL、设置自定义错误页面、启用压缩、禁止目录列表、限制访问速率等等。通过 .htaccess
文件,网站管理员可以在不需要服务器级别访问的情况下,实现对网站的灵活配置和管理。
需要注意的是,.htaccess
文件只对 Apache Web 服务器有效,而且其配置可能会影响网站的性能,特别是如果包含复杂的规则或需要频繁读取文件时。
那我们先写脚本后传文件。
<FilesMatch "loudong.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
这句话的意思就是当访问到名为 loudong.jpg 的文件时,Apache Web 服务器会将其当作 PHP 脚本来处理,而不是简单地作为静态文件直接返回给用户。
继续上传jpg图片,尽管这个文件实际上是一个伪装成图片的攻击脚本。
大小写漏洞
当人员发现漏洞后,简单地添加一个限制即可解决问题。因此,第五关的解决方案是直接禁止上传.htaccess文件。
当然,他未能察觉到另一个问题。再次查看源代码。
文件名都是小写的,但是我们需要确认一下,PHP是否支持大写文件名。我们可以试一试直接拦截请求并修改文件名来测试。
空格漏洞
在检测大小写后,经过详细查阅源代码后发现,没有对空格进行限制。如果确实没有空格限制,那么文件后缀的限制也将失效。
我们使用Burp Suite拦截请求进行发送。我在文件名后面自行添加了一个空格,因为默认情况下并没有文件名。
最终成功上传文件。关于绕过文件后缀检查的方法还有很多,我们不打算逐一列举。问题主要在于解析代码时的不严谨,通过利用其中的某个漏洞直接上传我们的脚本文件即可。
文件包含漏洞
当这张图片不再只是简单的视觉元素时,它前面看起来可能十分寻常,然而实际上它的后半部分包含了一段代码。
这一关的源码看下
当我们只读取前两个字节时,通常是为了获取图片文件的文件头信息,这些信息包含了关于文件类型和格式的重要数据。接下来,我们可以打开这三个图片文件,使用记事本编辑,来探索它们是否有共同的特征或属性。
这一部分还有另一个需要注意的地方,那就是文件包含漏洞。你知道文件包含漏洞指的是什么吗?
<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){include $file;
}else{show_source(__file__);
}
?>
由于直接使用 include 函数并且未对 $file 参数进行充分的过滤或验证,攻击者可以构造恶意请求,包含任意文件,甚至是远程的恶意文件。那么我们上传文件后,将文件地址拿到,然后通过这个文件包含漏洞试一下,结果显示确实存在此风险。
二次渲染绕过
这一关源代码很多,因此我决定仅复制并分享关键代码,供大家参考。
//使用上传的图片生成新的图片
$im = imagecreatefromjpeg($target_path);//使用上传的图片生成新的图片
$im = imagecreatefrompng($target_path);//使用上传的图片生成新的图片
$im = imagecreatefromgif($target_path);
这一步骤的主要目的是确定用户上传的图片格式,并重新生成新的图片。在这个过程中需要特别关注 GIF 图片的处理。GIF 图片在重新渲染后改动很小,主要原因是其压缩算法的优化和格式的固定限制,使得大部分修改只影响到少量的数据部分,而不会对整个图像文件造成大幅度的变化。
我们需要对流程进行改进:首先,请确保不随意修改图片文件,而是先上传并下载图片,再与本地图片进行对比。识别未变化的部分,然后逐一复制粘贴代码,如有错误则调整位置。
最后我们在这里改下:
上传后继续使用文件包含漏洞:
条件并发竞争
在这个阶段,仅仅是将上传的文件保存下来,然后进行校验、重命名并移动文件。如果校验失败,则会将文件删除。表面看起来似乎没有问题,但实际上存在许多潜在的漏洞。
首先,未进行文件类型验证便进行了保存操作,随后才进行验证并删除。这个漏洞为我们提供了攻击服务器的入口。我们可以利用Burp Suite拦截请求并发起集中攻击。只要在删除操作执行之前,我就能够访问到我上传的文件,便能执行脚本。现在开始行动。
当我们成功拦截了请求后,接下来的步骤是配置并发请求的开发工作。我们计划从默认的10个并发开始进行攻击。
观察这里的攻击效果,尽管它们通常会被及时清除,但只要我们成功访问其中一个,攻击就可以算是成功的。让我们开始吧。
讲解完了如何利用文件上传攻击服务器后,接下来的重点在于理解如何有效防御这些攻击。在服务器端实施良好的防护措施至关重要,因为防守胜过进攻。接下来,我们将根据上述经典案例来探讨如何加强服务器的安全防护。
EdgeOne防护措施
假设我们无法对程序员编写的代码进行检查,或者我们本身没有进行代码审计的能力,那么我们只能依赖外部保护措施。在这种情况下,今天仍然建议采用EdgeOne来解决这些问题。为了让大家更清楚地理解,我也简单绘制了一张图作为参考,看完图后问题就变得非常简单了,就像在架构中使用一个可插拔的中间件一样轻松应用即可。
文件漏洞防护手段
在前面我们详细讨论了多种攻击方法,现在让我们综述一下应该从哪些方面进行防护:
- 未限制文件类型:允许上传任何类型的文件,包括可执行文件。
- 未进行文件内容检查:未检查文件内容是否包含恶意代码。
- 未限制文件上传频率:刚才我们演示的时候,可以看到通过频繁上传文件达到条件竞争的状态。
除了前面提到的措施外,还有一个需要注意的地方,即文件大小的限制。考虑到我们拥有的是自己的服务器资源,我们可以避免不必要的流量消耗。因此,我们也需要在这方面进行适当的控制。
接下来,我们将逐一实施这些防护措施,你将会看到,通过最小的调整,我们能够达到最佳的安全效果。
文件敏感后缀检查
如果你打算上传Webshell,文件内容必定包含脚本内容。因此,我们需要确认EdgeOne是否提供相关的检查和校验功能。一旦你购买了EdgeOne的标准版,无需进行任何修改,即可立即上传文件并检查其是否能够有效拦截。
在一般情况下,EdgeOne应该会拦截这类请求,但我们需要再次查看样本日志,确认是否确实有请求未被拦截。
当我们注意到这一点时,我们发现请求不仅被捕获,还被识别为防护规则,但实际上处于观察状态而非直接拦截状态。这一点很重要,因为默认情况下,EdgeOne仅观察并不会直接拦截请求。我们需要进一步查看这个规则的ID,了解其具体功能。
首先进到自己配置的站点后,找到安全防护->web防护->托管规则->筛选规则id
这个问题相当繁琐,因为在样本日志中,当前规则id的具体限制并不直接显示出来,需要我们自己去查找。不过,最终我们确实可以找到这些信息。通过这种方式,我们可以识别文件后缀,这样一来,前端和后端在处理文件后缀时就无需编写大量的限制代码了。
事实上,前几个案例中的文件上传漏洞主要都是由于文件后缀问题导致的。EdgeOne技术能够通过一种简单的方法解决程序员代码不严谨的问题。
当涉及到相关的防护请求时,请记住关闭全局观察模式,这样可以让您单独配置每个规则的拦截方式。因此,现在我们将全局观察模式关闭。
那么让我们再次发起请求,以确认是否能够有效拦截这些请求。
难道我们表演翻车了吗?怎么还是观察模式,我本以为我们应该处于拦截请求的状态,而不是仅仅处于观察模式。这涉及到一个防护等级的问题,我们需要检视一下,默认设置可能偏向宽松了一些。
那么我们需要调整防护等级,以确保它能够拦截那些不应该直接访问后台的请求。然而,请注意,我们不能单独设置一个规则,如果需要进行设置,也必须按照父类规则的方式进行设置。让我们仔细查看一下:
当然!那么我们现在可以尝试上传一个文件,以便查看结果如何。
在实际应用中效果非常显著。不再演示剩余的各种奇葩敏感后缀,因为最终的拦截结果都是一致的。对于企业或个人而言,只需简单操作两次按钮开关,使用体验也非常出色。
伪文件代码注入检查
当我们试图规避后缀检查时,我们制作了一个文件,其后缀名为.jpg,但实际上是一个伪装的图片文件。让我们首先验证一下这个简单的伪装文件是否有效。
当文件内容实际上是PHP脚本时,尽管我们的文件后缀被设置为.jpg并不属于敏感后缀文件,因此可能可以规避EdgeOne的后缀规则检查。因此,我们可以尝试上传并查看是否能够成功执行。
尝试并未取得成功。那么我们来看看他被那个安全防护规则拦截住了。
当我们成功绕过了敏感后缀的防护检查,那么现在需要进一步分析的是,这是哪一个具体的规则被规避了。
这防护措施真的蛮不错,php脚本已经被拦截了。
那么,当我们测试更高级的伪装文件时,比如在一个看似正常的图片文件中嵌入代码脚本,防护规则是否能够检测到它们呢?在我们探讨绕过图片二次渲染的方法时,我们进行了实验,测试了在 GIF 文件中注入 PHP 代码的情况,具体如下图所示:
当然,我们可以看看是否有办法绕过这个防护措施呢?不过看来防护措施还是能够有效阻止的。
看看这些样本日志,因为它们都属于同一个防护规则ID,我们就不再重复查看了,而是继续探索其他测试手段。
除了上述代码注入来防止图片渲染外,如果没有进行二次渲染,另一种方法是直接在图片末尾添加内容。这种操作简单,接下来我们看看它是否能提供额外的防护效果。
演示虽然出了点问题,但没关系。如果防护不住,也不要紧,我们还可以联系腾讯客服,赶紧反馈情况。我会把所有的测试文件和网站链接都交给他们,让他们测试一下,找出问题所在。
经过长时间的深入沟通和分析,我们最终成功帮助他们发现了一个问题,剩下的就交给他们自行解决了。
这里为什么没有演示条件竞争防护呢?难道不应该增加一个上传频率规则吗?我不确定大家是否还记得,条件竞争攻击是通过上传一个PHP脚本,然后在检验通过的短暂时间窗口内发动攻击的。首先,PHP脚本必须成功上传,但EdgeOne已经拦截了这种脚本,这样怎么能有效地实施后续的上传速率限制呢?
文件上传速率限制
之前我们讨论过避免演示条件竞争攻击,但现在为什么又有上传速率限制呢?这个限制是为了防止频繁的文件上传导致服务器网络IO异常拥堵。这其实涉及到两个问题:一方面,我们不是在谈论通过脚本攻击服务器,而是用户可能通过频繁上传文件来占用服务器资源。只要上传足够频繁,就有可能使服务器无法响应其他用户的访问,进而导致网站宕机的情况发生。这种情况非常严重,影响可能相当恶劣。
话不多说,让我们来进行演示并设置一些限制。由于上传脚本文件会被拦截,因此我们将上传一个正常的图片来进行演示。同时,我们将使用Burp Suite来频繁测试文件上传攻击服务器,具体如图所示:
然后,我们直接发起并发请求。我们计划按照以下几个测试并发规则进行测试:每秒5、10、15、30和100次。首先,我们会使用10次每秒的并发量进行测试,然后再尝试100次每秒的并发量。
我们多次发送请求后,请查看一下服务器资源的情况。
这里服务器的流量封装上涨,尽管网站仍可正常访问,但我们的目的已经实现,大量消耗了网站的流量。
可以查看EdgeOne的统计分析,这次不仅限于Web安全分析,而是重点在指标分析上。我们可以观察到异常流量大量请求服务器,面对这种情况,我们应该采取哪些措施?
可以再看下面的请求分析。如图:
首先,通过分析该图,我们可以确定请求的IP地址及其对哪些URL进行了频繁请求,这些信息将为我们制定有效策略提供基础。
尽管这种方法并不是最优选择,但我们可以将客户的IP地址加入黑名单,以限制其访问我们的网站。这种方法虽然笨拙,因为客户IP可能会变动,导致我们需要不断更新配置,但至少是一种可行的措施。
然后,我们接下来要做的是将IP地址添加到黑名单中,这样可以简单地增加安全防护措施。当然,你可以根据个人需求添加IP地址段。在这个示例中,我仅添加了一个IP地址作为演示。
好的,保存完毕。接下来,我们试试发送请求,看看是否已经被成功拦截。
当所有请求都被成功拦截后,我们可以再次查看一下样本日志。
没错,这个规则ID就是刚刚由我们生成的唯一标识符。
当考虑到这一情况时,第二种方法即为限制请求的频率。
这里的限制过于宽松,我们需要收紧一些。一个人不可能请求得这么快。
当我们继续发送并发请求进行测试时,可以观察到EdgeOne已经能够识别到后续请求,并且使用了JavaScript挑战脚本,而非直接由服务器响应。
当我们检视样本日志时,同样可以观察到这一情况。
这是一个简单的全局限制。当然,某些企业用户的网站可能要求允许客户进行大量点击,这就需要考虑了。但不用着急,我们可以精确控制这个过程。接下来我们来讨论如何设置针对特定URL的请求限制。我们根据指标分析异常请求的地方,来设定相应的控制策略。你可以根据个人需求自行设置限制。
我在这里设置了所有涉及文件上传路径的限制。我们需要再确认一下是否已经完全拦截了所有这些路径。例如,/Pass-10/index.php
。
看起来确实成功阻止了潜在的攻击。至于上传速率的问题,我们就到这里讨论吧。
文件大小限制
速度有限制,不能让客户上传过大的文件。我们只需上传图片,并非视频,所以设定个上限是合理的,比如不超过2M,这个范围应该适应大多数需求。现在我们来具体操作一下。需要注意的是,这个操作不是在Web防护层进行,而是在站点加速层进行的设置。
为了更好地进行演示,我不会使用全局配置,而是采用差异化配置的方式。这意味着我们会根据业务需求单独配置特定路径下的文件上传,具体如图所示。
当我们试着上传一个非常大的文件,以便测试上传过程。
结果是网站被拦截了,这让我感觉好像我的网站无法访问一样。看起来我需要设置一下自定义响应页面,以免让访问者误以为网站不稳定。
我们需要在这里进行响应页面的设置,内容十分简洁明了,完全遵循官方网站提供的示例进行展示。
上述页面已创建,但尚未与413状态码绑定。接下来,我们将进一步完善刚才提到的规则。请参考下图:
当我们再次审视其效果时,可以使其看起来更加稳定,这里可以稍微美化一些,确保在满足自己需求的同时,外观也可以更为优美,具体如下图所示。
截至目前,针对文件上传的所有潜在漏洞攻击已经得到有效防范,但是道路漫漫,修行需持之以恒,少年仍需不懈努力。
总结
通过本文,我们深入探讨了文件上传漏洞攻击的多种案例和防范措施,以及在搭建攻击靶场时的实际操作。从前端和后端的校验漏洞,到利用Apache配置文件和文件包含漏洞的攻击方式,每一步都展示了安全防护的重要性。
在学习和实践过程中,我们不仅仅关注如何进行攻击,更着重于如何保护自己的服务器免受此类攻击。我们使用了EdgeOne作为一个解决方案的示例,展示了如何利用其提供的防护规则来有效防御文件上传漏洞。
无论是在靶场搭建过程中的细节操作,还是在攻击案例的分析过程中,安全意识和防护措施的实施都显得至关重要。通过本文,希望读者能够更深入地理解和应用这些安全原则,以保护自己的网络和服务器免受攻击的威胁。
在网络安全的道路上,学习永无止境。让我们共同努力,不断提升技能,保障网络环境的安全与稳定
相关文章:
![](https://i-blog.csdnimg.cn/img_convert/11242184881f4510ab7113a687105f0d.png)
EdgeOne安全专项实践:上传文件漏洞攻击详解与防范措施
靶场搭建 当我们考虑到攻击他人服务器属于违法行为时,我们需要思考如何更好地保护我们自己的服务器。为了测试和学习,我们可以搭建一个专门的靶场来模拟文件上传漏洞攻击。以下是我搭建靶场的环境和一些参考资料,供大家学习和参考࿰…...
![](https://i-blog.csdnimg.cn/direct/ea8d1b258d3847ce8673fedd778bba6e.png)
k8s部署rocketmq踩坑笔记
给团队部署一个rocketmq4.8.0. k8s上部署的broker,注册到nameserver上是自己的pod ip,导致本机连接到的broker的pod ip,这个ip k8s集群外的机器是无法联通的。 nameserver上注册的是这个pod ipv4 尝试将broker的配置brokerIP1修改为注册到na…...
![](https://www.ngui.cc/images/no-images.jpg)
Docker 通过创建Dockerfile 部署Jar包
1、创建Dockerfile 首先确保centos 安装docker,参考docker安装-CSDN博客 自己找个目录来存放Dockerfile mkdir Dockerfile 2、vim Dockerfile # 使用 OpenJDK 17 基础镜像 FROM jre17:v1.0# 设置工作目录 WORKDIR /app# 暴露端口 EXPOSE 8093# 设置容器内日志目录…...
![](https://i-blog.csdnimg.cn/direct/c1847b87c57a40debfbfcdc5ee9c8314.png)
shell脚本练习
题目 1、编写一个shell 脚本,检测 /tmp/size.log 文件。如果存在,显示它的内容;不存在则创建一个文件,将创建时间写入。 2、编写一个shell 脚本,实现批量添加 20个用户,用户名为user1-20,密码为user 后面跟…...
![](https://i-blog.csdnimg.cn/blog_migrate/c6909aecbcc13d601e65c093ad0ee5d7.gif)
【计算机网络】lab4 Ipv4(IPV4的研究)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...
![](https://www.ngui.cc/images/no-images.jpg)
Python Json格式数据处理
示例:查看和编辑 JSON 文件的 Python 程序 import json from pprint import pprintdef load_json(file_path):"""加载并解析 JSON 文件。:param file_path: JSON 文件路径:return: 解析后的 JSON 对象(字典或列表)"&quo…...
![](https://i-blog.csdnimg.cn/direct/1222598d2d0a4eaea5365900280db194.png)
【声音场景分类--论文阅读】
1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段,主要重点是建立一…...
![](https://i-blog.csdnimg.cn/direct/f5058643e4c84aad9413a01ca68ad328.png)
Web前端界面开发
前沿:介绍自适应和响应式布局 自适应布局:-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果,随着我们的屏幕大小而发生适配的效果(类似等比例) 如:rem适配 和 vw/vh适配 …...
![](https://i-blog.csdnimg.cn/direct/bc00bdfe01e94960aba72176dbee82e2.png)
模式识别与机器学习
文章目录 考试题型零、简介1.自学内容(1)机器学习(2)机器学习和统计学中常见的流程(3)导数 vs 梯度(4)KL散度(5)凸优化问题 2.基本概念3.典型的机器学习系统4.前沿研究方向举例 一、逻辑回归1.线性回归2.逻辑回归3.随堂练习 二、贝叶斯学习基础1.贝叶斯公式2.贝叶斯决策3.分类器…...
![](https://i-blog.csdnimg.cn/direct/35caad918bc2490ebd250576aeab5e98.png)
eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
ACL实验(Access Control List访问控制列表)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。访问控制列表被广泛地应用于路由器和三层交换机。 准备工作 在eNSP里面部署设备&a…...
![](https://i-blog.csdnimg.cn/direct/24874a2b441e4f09bbf2b9e4ae6132bb.png)
STM32 I2C硬件配置库函数
单片机学习! 目录 前言 一、I2C_DeInit函数 二、I2C_Init函数 三、I2C_StructInit函数 四、I2C_Cmd函数 五、I2C_GenerateSTART函数 六、I2C_GenerateSTOP函数 七、I2C_AcknowledgeConfig函数 八、I2C_SendData函数 九、I2C_ReceiveData函数 十、I2C_Sen…...
![](https://i-blog.csdnimg.cn/direct/4c8723ca6e0b4eea86a8c4fbcce8e1dc.png)
特制一个自己的UI库,只用CSS、图标、emoji图 第二版
图: 代码: index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…...
![](https://www.ngui.cc/images/no-images.jpg)
Hologres 介绍
Hologres 是 阿里云 提供的一款 实时数据分析平台,它结合了数据仓库(Data Warehouse)和流式计算(Stream Processing)的优势,专为大规模数据分析和实时数据处理而设计。Hologres 基于 PostgreSQL 构建&#…...
![](https://i-blog.csdnimg.cn/direct/aa563fd3ddc64903aebc00e72fbb91d7.png)
oracle闪回表
文章目录 闪回表案例1:(未清理回收站时的闪回表--成功)案例2(清理回收站时的闪回表--失败)案例3:彻底删除表(不经过回收站--失败)案例4:闪回表之后重新命名新表总结1、删…...
![](https://i-blog.csdnimg.cn/direct/f7a10ebbdcaa40c893c5d95892dbd075.png)
蓝桥与力扣刷题(283 移动零)
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: …...
![](https://i-blog.csdnimg.cn/direct/2e39c44c2ef74c298e64a0a86bebb360.png)
每日学习30分轻松掌握CursorAI:Cursor AI自然语言编程入门
Cursor AI自然语言编程入门 1. 自然语言编程概述 自然语言编程是一种革命性的编程方式,让开发者能够使用日常语言描述需求,由AI将其转换为可执行的代码。让我们通过系统化的学习来掌握这项技能。 2. 自然语言编程基础 2.1 工作原理流程图 2.2 指令模…...
![](https://www.ngui.cc/images/no-images.jpg)
Ubuntu22.04 离线安装:gcc、make、dkms、build-essential
挂载启动U盘 查看U盘对应的设备名称 sudo fdisk -l 1 # 以下就是需要挂载的U盘 Disk /dev/sdc: 14.9 GiB, 15938355200 bytes, 31129600 sectors Units: sectors of 1 * 512 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): …...
![](https://i-blog.csdnimg.cn/img_convert/6b60a9b2e626bfe4f69a2145881f63ea.png)
【竞技宝】CS2:HLTV2024选手排名TOP4-NiKo
北京时间2025年1月11日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP4选手为G2(目前已转为至Falcons)战队的NiKo。 选手简介 NiKo是一名来自波黑的CS职业选手,现年26岁。作为DOTA2饱负盛名的职业选手,NiKo在CS1.6时代就已经开始征战职业赛场。2012年,年仅15岁…...
![](https://i-blog.csdnimg.cn/direct/3881101ff28e40e991ed0b05795edcef.png)
Kali系统(Debian 10.3) 遇到的问题
目录 问题一:非问题 kali 基础官网与安装 问题二: 问题三: Kali系统 MySQL问题Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock (2) 问题四:重新安装MySQL 也就是MariaDB(MariaDB 含 MySQL相关…...
![](https://i-blog.csdnimg.cn/direct/794bbe7cba8940229b689590f9a22054.png)
【2025最新计算机毕业设计】基于SpringBoot+Vue奶茶点单系统(高质量源码,提供文档,免费部署到本地)
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...
![](https://i-blog.csdnimg.cn/direct/d5ddcb28e7b8440495edbe9e28fb461c.png)
洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 c语言
题目: P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 题目描述 伐木工人 Mirko 需要砍 M 米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko…...
![](https://www.ngui.cc/images/no-images.jpg)
【神经网络中的激活函数如何选择?】
在神经网络中,激活函数的选择对于模型的性能和学习效率至关重要。以下是一些关于如何选择激活函数的建议: 一、隐藏层中的激活函数选择 ReLU及其变体: ReLU(Rectified Linear Unit,修正线性单元)ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
服务器多节点 Grafana、Prometheus 和 Node-Exporter Docker版本部署指南
要在多台服务器上部署 Grafana、Prometheus 和 Node-Exporter,并且其中一台服务器专门用于 Grafana 和 Prometheus 的部署 1. 准备工作 服务器信息: Server 1:用于部署 Grafana 和 Prometheus。 Server 2-n:用于部署 Node-Export…...
![](https://www.ngui.cc/images/no-images.jpg)
<C++学习>C++ Boost 算法集合操作教程
C Boost 算法集合操作教程 Boost 提供了一些非常强大的算法库,用于对集合进行高效的操作。这些集合算法库主要提供了便捷的接口,支持常见的集合运算(如并集、交集、差集等)、排列组合和更高级的容器操作。 1. Boost 算法库简介 …...
![](https://i-blog.csdnimg.cn/direct/48a471b02aed45d19736cdccd376c5ad.png)
Jaeger UI使用、采集应用API排除特定路径
Jaeger使用 注: Jaeger服务端版本为:jaegertracing/all-in-one-1.6.0 OpenTracing版本为:0.33.0,最后一个版本,停留在May 06, 2019。最好升级到OpenTelemetry。 Jaeger客户端版本为:jaeger-client-1.3.2。…...
![](https://www.ngui.cc/images/no-images.jpg)
设计一个利用事务特性可以阻塞线程的排他锁,并且通过注解和 AOP 来实现
设计思路: 利用数据库表记录锁标识:通过唯一标识符(如方法名 参数),我们可以在数据库中插入一条记录,表示当前方法正在执行。这条记录需要记录插入时间。 注解:通过注解标识哪些方法需要加锁&a…...
![](https://i-blog.csdnimg.cn/direct/6cea377c880e4a67bbec24c8043e1ff1.png)
【2024年华为OD机试】 (A卷,100分)- 对称美学(Java JS PythonC/C++)
一、问题描述 题目描述 对称就是最大的美学,现有一道关于对称字符串的美学。已知: 第1个字符串:R第2个字符串:BR第3个字符串:RBBR第4个字符串:BRRBRBBR第5个字符串:RBBRBRRBBRRBRBBR 相信你…...
![](https://i-blog.csdnimg.cn/img_convert/e13f22b9c529479630fcf1a3e7ef4316.webp?x-oss-process=image/format,png)
【教程】数据可视化处理之2024年各省GDP排名预测!
过去的一年里,我国的综合实力显著提升,在新能源汽车、新一代战机、两栖攻击舰、航空航天、芯片电子、装备制造等领域位居全球前列。虽然全国各省市全年的经济数据公布还需要一段时间,但各地的工业发展数据,财政收入数据已大概揭晓…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A)
Java 将RTF文档转换为Word、PDF、HTML、图片
RTF文档因其跨平台兼容性而广泛使用,但有时在不同的应用场景可能需要特定的文档格式。例如,Word文档适合编辑和协作,PDF文档适合打印和分发,HTML文档适合在线展示,图片格式则适合社交媒体分享。因此我们可能会需要将RT…...
![](https://i-blog.csdnimg.cn/direct/e2eb710a0ec8407f86774d471ca8a0d4.png)
深度学习的原理和应用
一、深度学习的原理 深度学习是机器学习领域的一个重要分支,其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理: 多层神经网络结构:深度学习模型通常由多层神经元组成,这些神经元通过权重和偏置相互连接。输入数据…...
![](/images/no-images.jpg)
html 学习网站/百度搜索推广的五大优势
下面这段代码可以在页面关闭的时候自定义信息提示你 <html><head><title></title><script type"text/javascript">functionConfirmClose() { window.event.returnValue "请先保存好数据"; } functionShowConfirmClose(bln…...
![](/images/no-images.jpg)
那个做网站好/搜索广告是什么
Arcgis中如何为Shapefile属性表添加字段属性描述了要素的相关特性,并存储于表中。在创建新的属性表或是向已有的属性表中增加字段的时候,必须指明数据类型和字段属性,比如精度(Precision)或长度(Length)。数据类型的选择和相关设置会影响存储…...
![](https://img-blog.csdnimg.cn/20210412092221392.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Z4dHh6Mg==,size_16,color_FFFFFF,t_70)
佛山 做网站公司有哪些/郑州seo外包公司哪家好
问题 Charles是Mac上面知名的代理软件,类似Windows上面的fiddler。在调试CDN的过程中,需要远程调试某个地区的节点,就只能使用代理服务区进行访问调试。但是这个过程中同时需要Charles对CDN的客户端进行抓包处理,但同时有需要一个…...
![](/images/no-images.jpg)
哪里找做网站的公司/活动推广软文
1 饼状图 import mx.collections.ArrayCollection; //绑定需要显示的数据 [Bindable] //设定要显示的数据 private var modelData:ArrayCollection new ArrayCollection( [ { Year: "2010年世界杯", Count: 4 }, { Year: "2014年世界杯", Count: 10 }, { …...
![](/images/no-images.jpg)
深圳网站建设公司设计/网站平台搭建
html页面在苹果手机内,safari浏览器,微信中滑动不流畅问题解决方案参考文章: (1)html页面在苹果手机内,safari浏览器,微信中滑动不流畅问题解决方案 (2)https://www.cn…...
![](https://img-blog.csdnimg.cn/e09f30ed07ff493f97ea55adf212def6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LWk6bG856eR5oqA,size_20,color_FFFFFF,t_70,g_se,x_16)
wordpress wiki/深圳知名seo公司
一、硬件材料 1*Arduino NANO开发板 1*模块MQ-2烟雾气敏传感器模块 1*传感器模块 L9110风扇模块 1*加湿器USB喷雾模块 二、硬件接线图...