DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
目录
- 暴力破解
- low
- 方法1
- 方法2
- medium
- high
- impossible
暴力破解
暴力破解是一种尝试通过穷尽所有可能的选项来获取密码、密钥或其他安全凭证的攻击方法。它是一种简单但通常无效率的破解技术,适用于密码强度较弱的环境或当攻击者没有其他信息可供利用时。暴力破解的基本原理是依次尝试所有可能的组合,直到找到正确的答案。
low
方法1
sql注入万能密码,输入admin’ or ‘1’=1
方法2
随意输入,然后抓包
发送到爆破模块,添加变量并选择集束炸弹模式
在pyload设置里设置字典攻击,然后开始攻击即可
筛选长度查看,攻击成功
代码审计
<?phpif( isset( $_GET[ 'Login' ] ) ) {// Get username$user = $_GET[ 'username' ];// Get password$pass = $_GET[ 'password' ];$pass = md5( $pass ); //明文md5算法不安全// Check the database$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; //此处直接将用户输入的用户名和密码嵌入到 SQL 查询中,容易受到 SQL 注入攻击。攻击者可以通过输入特定的恶意字符串来操作数据库$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successful$html .= "<p>Welcome to the password protected area {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// Login failed$html .= "<pre><br />Username and/or password incorrect.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>
medium
随意输入抓包并发送到爆破模块
添加变量选择集束炸弹模式攻击
在pyload模块设置字典并攻击
攻击速度会比较慢,因为源码设置了每次登录后需要2秒才能再次登录,爆破成功
代码审计
<?phpif( isset( $_GET[ 'Login' ] ) ) {// Sanitise username input$user = $_GET[ 'username' ];$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitise password input$pass = $_GET[ 'password' ];$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass ); //md5算法不安全// Check the database$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; //代码使用 mysqli_real_escape_string 函数对用户输入进行清理,但仍然存在 SQL 注入的风险,因为 SQL 查询是通过字符串拼接的。$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// Get users details$row = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// Login successful$html .= "<p>Welcome to the password protected area {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// Login failedsleep( 2 );$html .= "<pre><br />Username and/or password incorrect.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}?>
high
随意输入然后抓包,可以看到这里设置了token,token相当于一个房门的钥匙,没有它即使有账号密码也无法登录
选择交叉攻击,并且token也要设置变量
在设置里添加token,选中并添加
重定向选中总是
资源池设置最大并发请求为1,防止还没使用token就被刷掉
在设置里,攻击结果这取消勾选此选项
回到浏览器,找到token,复制下来
选中递归提取,并把刚复制的token复制进去
设置好字典后就可以攻击了
攻击成功
代码审计
<?phpif( isset( $_GET[ 'Login' ] ) ) {// 检查 Anti-CSRF 令牌checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // 增加了一个 token 检测// 清理用户名输入$user = $_GET[ 'username' ];$user = stripslashes( $user ); // 去除字符串中的反斜杠(\)$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));// 对字符串中的特殊字符(\x00,\n,\r,\',\",\x1a)进行转义// 清理密码输入$pass = $_GET[ 'password' ];$pass = stripslashes( $pass );$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass ); // 将密码进行 MD5 哈希处理// 检查数据库$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; // 查询数据库$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );if( $result && mysqli_num_rows( $result ) == 1 ) {// 获取用户详情$row = mysqli_fetch_assoc( $result );$avatar = $row["avatar"];// 登录成功$html .= "<p>欢迎来到受密码保护的区域 {$user}</p>";$html .= "<img src=\"{$avatar}\" />";}else {// 登录失败sleep( rand( 0, 3 ) ); // 随机暂停 0 到 3 秒$html .= "<pre><br />用户名和/或密码不正确。</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); // 关闭数据库连接
}// 生成 Anti-CSRF 令牌
generateSessionToken();?>
impossible
这是最高的难度,其中每次登录都由GET提交方式改为POST提交方式,同样加了token校验机制,还有就是他限制的登录的次数,如果登录失败3次,账户就会被锁定,需要等待15,然后才能重新尝试。
代码审计
<?phpif( isset( $_POST[ 'Login' ] ) && isset ($_POST['username']) && isset ($_POST['password']) ) {// 检查 Anti-CSRF 令牌checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// 清理用户名输入$user = $_POST[ 'username' ];$user = stripslashes( $user ); // 去除字符串中的反斜杠(\)$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));// 清理密码输入$pass = $_POST[ 'password' ];$pass = stripslashes( $pass );$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] 修复 mysql_escape_string() 调用!此代码无法工作。", E_USER_ERROR)) ? "" : ""));$pass = md5( $pass ); // 将密码进行 MD5 哈希处理// 默认值$total_failed_login = 3; // 允许失败登录的最大次数$lockout_time = 15; // 锁定时间(分钟)$account_locked = false; // 账户是否被锁定// 检查数据库(检查用户信息)$data = $db->prepare( 'SELECT failed_login, last_login FROM users WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();$row = $data->fetch();// 检查用户是否被锁定if( ( $data->rowCount() == 1 ) && ( $row[ 'failed_login' ] >= $total_failed_login ) ) {// 用户被锁定//$html .= "<pre><br />此账户因登录错误过多而被锁定。</pre>";// 计算用户何时可以再次登录$last_login = strtotime( $row[ 'last_login' ] );$timeout = $last_login + ($lockout_time * 60);$timenow = time();/*print "最后一次登录时间是: " . date ("h:i:s", $last_login) . "<br />";print "当前时间是: " . date ("h:i:s", $timenow) . "<br />";print "超时时间是: " . date ("h:i:s", $timeout) . "<br />";*/// 检查是否经过足够的时间,如果没有,则锁定账户if( $timenow < $timeout ) {$account_locked = true;// print "账户已锁定<br />";}}// 检查数据库(如果用户名与密码匹配)$data = $db->prepare( 'SELECT * FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR);$data->bindParam( ':password', $pass, PDO::PARAM_STR );$data->execute();$row = $data->fetch();// 如果登录有效if( ( $data->rowCount() == 1 ) && ( $account_locked == false ) ) {// 获取用户详情$avatar = $row[ 'avatar' ];$failed_login = $row[ 'failed_login' ];$last_login = $row[ 'last_login' ];// 登录成功$html .= "<p>欢迎来到受密码保护的区域 <em>{$user}</em></p>";$html .= "<img src=\"{$avatar}\" />";// 自上次登录以来,账户是否被锁定?if( $failed_login >= $total_failed_login ) {$html .= "<p><em>警告</em>: 可能有人正在暴力破解您的账户。</p>";$html .= "<p>登录尝试次数: <em>{$failed_login}</em>。<br />上一次登录尝试是在: <em>{$last_login}</em>.</p>";}// 重置错误登录计数$data = $db->prepare( 'UPDATE users SET failed_login = "0" WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();} else {// 登录失败sleep( rand( 2, 4 ) ); // 随机暂停2到4秒// 给用户一些反馈$html .= "<pre><br />用户名和/或密码不正确.<br /><br/>或者,账户因登录失败次数过多而被锁定.<br />如果是这种情况,<em>请在 {$lockout_time} 分钟后再试</em>.</pre>";// 更新错误登录计数$data = $db->prepare( 'UPDATE users SET failed_login = (failed_login + 1) WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();}// 设置最后登录时间$data = $db->prepare( 'UPDATE users SET last_login = now() WHERE user = (:user) LIMIT 1;' );$data->bindParam( ':user', $user, PDO::PARAM_STR );$data->execute();
}// 生成 Anti-CSRF 令牌
generateSessionToken();
?>
设置了防爆破模式,同时采用了更为安全的PDO(PHP Data Object)机制防御sql注入,这是因为不能使用PDO扩展本身执行任何数据库操作,而sql注入的关键就是通过破坏sql语句结构执行恶意的sql命令。
相关文章:
DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
目录 暴力破解low方法1方法2 mediumhighimpossible 暴力破解 暴力破解是一种尝试通过穷尽所有可能的选项来获取密码、密钥或其他安全凭证的攻击方法。它是一种简单但通常无效率的破解技术,适用于密码强度较弱的环境或当攻击者没有其他信息可供利用时。暴力破解的基…...
sql字段值转字段
表alertlabel中记录变字段 如何用alertlabel表得到下面数据 实现的sql语句 select a.AlertID, (select Value from alertlabel where AlertIDa.AlertID and Labelhost) as host, (select Value from alertlabel where AlertIDa.AlertID and Labeljob) as job from (select …...
lua和C API库一些记录
相关头文件解释 lua.h:声明lua提供的基础函数,所有内容都有个前缀lua_; luaxlib.h:声明辅助库提供的函数,所有内容都有个前缀luaL_; lualib.h:声明了打开标准库的函数; 辅助库对…...
游戏引擎学习第68天
关于碰撞和交互的进展回顾 在进行引擎架构设计时,我们决定开始探讨如何处理游戏中的碰撞问题。举个例子,比如一把被投掷的剑碰到了敌人。我们希望能够响应这些事件,开始构建游戏中的互动机制。这些互动是游戏设计的核心部分,游戏…...
LeetCode430周赛T3
题目描述 给定一个只包含正整数的数组 nums,我们需要找到其中的特殊子序列。特殊子序列是一个长度为4的子序列,用下标 (p, q, r, s) 表示,它们满足以下条件: 索引顺序:p < q < r < s,且相邻坐标…...
网络:常用的以太网PHY芯片
常用的以太网PHY芯片(物理层芯片)主要负责将数字信号转换为适合在物理介质上传输的模拟信号。它们是网络设备(如交换机、路由器、网卡等)中的关键组件,通常工作在OSI模型中的物理层和数据链路层之间。 以下是一些常见…...
前端项目 node_modules依赖报错解决记录
1.首先尝试解决思路 npm报错就切换yarn , yarn报错就先切换npm删除 node_modules 跟 package-lock.json文件重新下载依 2. 报错信息: Module build failed: Error: Missing binding D:\vue-element-admin\node_modules\node-sass\vendor\win32-x64-8…...
小猫可以吃面包吗?
在宠物饲养日益普及的当下,小猫的饮食健康成为众多铲屎官关注的焦点。其中,小猫是否可以吃面包这一问题引发了不少讨论。 从面包的成分来看,其主要原料是面粉、水、酵母和盐,部分还会添加糖、油脂、鸡蛋、牛奶等。面粉富含碳水化…...
ACPI PM Timer
ACPI PM Timer 概述: ACPI PM Timer是一个非常简单的计时器,它以 3.579545 MHz 运行,在计数器溢出时生成系统控制中断(SCI)。它精度较低,建议使用其他定时器,如HPET或APIC定时器。 检测ACPI P…...
算法学习(19)—— 队列与 BFS
关于bfs bfs又称宽搜,全称是“宽度优先遍历”,然后就是关于bfs的三个说法:“宽度优先搜索”,“宽度优先遍历”,“层序遍历”,这三个都是同一个东西,前面我们介绍了大量的深度优先遍历的题目已经…...
python|利用ffmpeg按顺序合并指定目录内的ts文件
前言: 有的时候我们利用爬虫爬取到的ts文件很多,但ts文件只是视频片段,并且这些视频片段是需要按照一定的顺序合并的,通常ts文件合并输出格式为mp4格式 因此,本文介绍利用python,调用ffmpeg来批量的按自己…...
腾讯音乐:说说Redis脑裂问题?
Redis 脑裂问题是指,在 Redis 哨兵模式或集群模式中,由于网络原因,导致主节点(Master)与哨兵(Sentinel)和从节点(Slave)的通讯中断,此时哨兵就会误以为主节点…...
jmeter并发用户逐步递增压测找性能拐点
jmeter并发用户逐步递增压测找性能拐点 目的: 使用逐层递增的并发压力进行测试,找到单功能的性能拐点(一般需要包含四组测试结果,拐点前一组,拐点一组,拐点后两组),统计响应时间、…...
跟着问题学3.2——Fast R-CNN详解及代码实战
R-CNN的不足 2014年,Ross Girshick提出RCNN,成为目标检测领域的开山之作。一年后,借鉴空间金字塔池化思想,Ross Girshick推出设计更为巧妙的Fast RCNN(https://github.com/rbgirshick/fast-rcnn)ÿ…...
【yolov5】实现FPS游戏人物检测,并定位到矩形框上中部分,实现自瞄
介绍 本人机器学习小白,通过语言大模型百度进行搜索,磕磕绊绊的实现了初步效果,能有一些锁头效果,但识别速度不是非常快,且没有做敌友区分,效果不是非常的理想,但在4399小游戏中爽一下还是可以…...
软考高级:磁盘阵列(RAID)
** 概念讲解 ** 磁盘阵列是由多个磁盘组合成的一个大容量存储设备。它主要有以下几个作用: 提高存储容量:通过将多个磁盘组合在一起,可以获得比单个磁盘更大的存储容量。比如,一个磁盘的容量是 1TB,使用四个磁盘组成…...
梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架05
1、认识ContentProvider...
torch.nn.LSTM介绍
torch.nn.LSTM 是 PyTorch 提供的一个高级封装,用于构建长短时记忆网络(LSTM)。相比手动实现,torch.nn.LSTM 更高效且支持批量处理、双向 LSTM、多层 LSTM 等功能,适合大多数实际应用。 LSTM基本原理 门控机制(Gating Mechanism)是深度学习中常见的一种设计,用于控制信…...
React 组件的通信方式
在 React 应用开发中,组件之间的通信是构建复杂用户界面和交互逻辑的关键。正确地实现组件通信能够让我们的应用更加灵活和易于维护。以下是几种常见的 React组件通信方式。 一、父子组件通信 1. 通过 props 传递数据(父组件向子组件传递数据࿰…...
关于 覆铜与导线之间间距较小需要增加间距 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144776995 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
使用seata实现分布式事务管理
配置 版本说明:springCloud Alibaba组件版本关系 我用的是spring cloud Alibaba 2.2.1.RELEASE 、springboot 2.2.1.RELEASE、nacos 2.0.1、seata1.2.0,jdk1.8 seata 主要用于在分布式系统中对数据库进行事务回滚,保证全局事务的一致性。 seata的使用…...
【机器学习】深度学习(DNN)
文章目录 1. 神经网络结构2. 训练步骤3. 反向传播4. 为什么深,而不是宽(模块化)5. 初始化参数能否全为0? 1. 神经网络结构 输入层隐藏层:用于特征转换输出层:用于分类技巧:将网络中的参数写成矩…...
C++ 设计模式:门面模式(Facade Pattern)
链接:C 设计模式 链接:C 设计模式 - 代理模式 链接:C 设计模式 - 中介者 链接:C 设计模式 - 适配器 门面模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供一个一致&#…...
自动化测试之Pytest框架(万字详解)
Pytest测试框架 一、前言二、安装2.1 命令行安装2.2 验证安装 三、pytest设计测试用例注意点3.1 命名规范3.2 断言清晰3.3 fixture3.4 参数化设置3.5 测试隔离3.6 异常处理3.7 跳过或者预期失败3.8 mocking3.9 标记测试 四、以案例初入pytest4.1 第一个pytest测试4.2 多个测试分…...
YOLOv10-1.1部分代码阅读笔记-conv.py
conv.py ultralytics\nn\modules\conv.py 目录 conv.py 1.所需的库和模块 2.def autopad(k, pNone, d1): 3.class Conv(nn.Module): 4.class Conv2(Conv): 5.class LightConv(nn.Module): 6.class DWConv(Conv): 7.class DWConvTranspose2d(nn.ConvTranspose2d)…...
大模型-Ollama使用相关的笔记
大模型-Ollama使用相关的笔记 解决Ollama外网访问问题(配置ollama跨域访问)Postman请求样例 解决Ollama外网访问问题(配置ollama跨域访问) 安装Ollama完毕后, /etc/systemd/system/ollama.service进行如下修改&#…...
【机器学习】概述
文章目录 1. 机器学习三步骤2. 机器学习图谱2.1 任务类型 (Task)2.2 模型选择 (Methods)2.3 学习场景 (Scenario) 1. 机器学习三步骤 定义一个模型 (Define a set of function) 选择一组合适的函数来表示模型。 评估模型好坏 (Goodness of function) 找到一个损失函数…...
什么是网络安全(Cybersecurity)?
不同组织机构对网络安全(Cybersecurity或Cyber Security)的定义不尽相同。从目标上来说,网络安全主要用于保护网络、计算机、移动设备、应用程序及数据等资产免受网络攻击,避免造成数据泄露、业务中断等安全问题。 网络钓鱼、勒索…...
3_TCP/IP连接三次握手与断开四次挥手
TCP/IP 通信是网络通信的基础协议,分为以下主要步骤: 1、建立连接(三次握手) 目的:保证双方建立可靠的通信连接。 过程: 1>客户端发送 SYN:客户端向服务器发送一个 SYN(同步&…...
基于单片机的电梯模拟控制系统
摘要: 文章主要针对基于单片机的电梯模拟控制系统进行研究,指出基于单片机的电梯模拟控制系统应用优点,并在此基础上介绍单片机控制技术,分析单片机在电梯模拟控制系统中的具体应用。 关键词: 单片机;电梯;模拟控制系统 1 基于单片机的电梯模拟控制系统应用优点概述 1…...
区块链安全常见的攻击——ERC777 重入漏洞 (ERC777 Reentrancy Vulnerability)【5】
区块链安全常见的攻击分析——ERC777 重入漏洞 ERC777 Reentrancy Vulnerability【5】 区块链安全常见的攻击合约和简单复现,附带详细分析——ERC777 重入漏洞 (ERC777 Reentrancy Vulnerability)【5】1.1 漏洞合约1.2 漏洞分析1.3 攻击分析1.4 攻击合约1.5 hardhat…...
MusicFree - 免费播放全网歌曲!无广告开源网络音乐聚合播放器 (安卓电脑版)
大家平常听歌可能都会在 QQ 音乐、网易云音乐、酷狗、喜马拉雅等不同平台来回切换,体验其实很烦。曾经推荐过不少“聚合”音乐应用,比如 洛雪音乐助手、Listen1 等等。 最近又有一个新选择了!MusicFree 是一款免费开源清爽无广告的音乐播放器…...
html+css+js网页设计 美食 美拾9个页面
htmlcssjs网页设计 美食 美拾9个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1࿰…...
RustDesk内置ID服务器,Key教程
RustDesk内置ID服务器,Key教程 首先需要准备一个域名,并将其指定到你的 rustdesk 服务器 ip 地址上,这里编译采用的是Github Actions ,说白了是就workflows,可以创建一些自动化的工作流程,例如代码的检查&a…...
Python学生管理系统(MySQL)
上篇文章介绍的Python学生管理系统GUI有不少同学觉得不错来找博主要源码,也有同学提到老师要增加数据库管理数据的功能,本篇文章就来介绍下python操作数据库,同时也对上次分享的学生管理系统进行了改进了,增加了数据库,…...
Spring Boot 学习笔记
学习代码第一步:如何写 Hello world ? 1、新建项目 新建一个 Maven Java 工程,在 pom.xml 文件中添加 Spring Boot Maven 依赖: <parent><groupId>org.springframework.boot</groupId><artifactId>spri…...
UML统一建模语言测试题汇总
2-UML概念模型测试 (单选题, 1.0 分) UML中的关系不包括()。 A. 抽象 B. 实现 C. 依赖 D. 关联 我的答案:A正确答案: A 知识点: UML的构成 1.0分 (单选题, 1.0 分) 下列事物不属于UML结构事物的是()。 A. 组件 B.…...
【微服务】SpringBoot 自定义消息转换器使用详解
目录 一、前言 二、SpringBoot 内容协商介绍 2.1 什么是内容协商 2.2 内容协商机制深入理解 2.2.1 内容协商产生的场景 2.3 内容协商实现的常用方式 2.3.1 前置准备 2.3.2 通过HTTP请求头 2.3.2.1 操作示例 2.3.3 通过请求参数 三、SpringBoot 消息转换器介绍 3.1 H…...
数据结构(哈希表(中)纯概念版)
前言 哈希表(Hash Table)是计算机科学中的一个基础而重要的数据结构,它广泛评估各种算法和系统中,尤其是在需要快速查找、插入和删除操作的场景中。由于其O( 1)的平均时间复杂度,存储表在性能要求较高的应用中表现得非…...
Node.js 工具:在 Windows 11 中配置 Node.js 的详细步骤
一、概述 记录时间 [2024-12-25] 本文讲述如何在 Windows 11 中进行 Node.js 工具的安装和配置。 以下是详细的步骤和说明。 二、安装 Node.js 1. 官网下载 通过官网,下载 Node.js,上面有好几种下载方式,文中下载的是 zip 压缩包。 如图&…...
工作流并行网关退回思路
问题描述 在设计工作流时遇到并行的流程,会出现并行流程的退回,这里记录下想到的解决思路,后续问题会记录在这里。 流程图 这里是一个简单的流程图: 并行退回思路 若是正常流程退回,流程是: 获取回退…...
C#数学相关开发性能优化方法
本文Github地址:CSharp-MathOptimization.md 华为公司的C语言编程规范在开头就强调了: 一般情况下,代码的可阅读性高于性能,只有确定性能是瓶颈时,才应该主动优化。 本文讲述的方法没有经过大项目和大公司的检验&…...
vulnhub jangow靶机
1.扫描靶机IP arp-scan -l如果扫不到靶机的话根据以下配置 启动时点击第二个 按回车 继续选择第二个 按e进入编辑 删除"recovery nomodeset" 在末尾添加"quiet splash rw init/bin/bash" Ctrlx 启动进入如下界面 passwd修改root密码 重启电脑登录root修…...
配置搜索无人机
升级ubuntu内核 https://www.bilibili.com/video/BV11X4y1h7qN/?spm_id_from333.337.search-card.all.click 进入四个内核文件并安装 sudo dpkg -i *.deb安装ROS,PX4,XTDrone,QGC https://blog.csdn.net/qq_45493236/article/details/13…...
2-6-1-1 QNX编程入门之进程和线程(四)
阅读前言 本文以QNX系统官方的文档英文原版资料“Getting Started with QNX Neutrino: A Guide for Realtime Programmers”为参考,翻译和逐句校对后,对在QNX操作系统下进行应用程序开发及进行资源管理器编写开发等方面,进行了深度整理&…...
Vue开发环境搭建上篇:安装NVM和NPM(cpnm、pnpm)
文章目录 引言I 安装NVM1.1 Windows系统安装NVM,实现Node.js多版本管理1.2 配置下载镜像1.3 NVM常用操作命令II NPM永久使用淘宝源安装 cnpm安装pnpm【推荐】see also: vscode常用插件引言 淘宝镜像:http://npm.taobao.org 和 http://registry.npm.taobao.org 已在 2022.06.3…...
2.微服务灰度发布落地实践(agent实现)
文章目录 前言java agent的介绍基础实现agent端 http服务实现agent端api接口 前言 据上一篇,设计方案的分析,综合考虑,最终决定,客户端采用agent方案实现,具本原因不再赘述, 感觉兴趣的小伙伴可以回头了解一下.该篇主…...
网络安全专业术语
网络安全专有名词详解 1.肉鸡 被黑客操控的终端设备(电脑、服务器、移动设备等等),黑客可以随心所欲的操作这些终端设备而不会被发觉。 2.木马 表面上伪装成正常的程序,但是当这些程序运行时候就会获取整个系统的控制权限&#…...
SpringMVC核心、两种视图解析方法、过滤器拦截器 “ / “ 的意义
SpringMVC的执行流程 1. Spring MVC 的视图解析机制 Spring MVC 的核心职责之一是将数据绑定到视图并呈现给用户。它通过 视图解析器(View Resolver) 来将逻辑视图名称解析为具体的视图文件(如 HTML、JSP)。 核心流程 Controlle…...
ubuntu快速入门
1.进入某个文件夹 cd workspace/2.tab自动补全 3.列出当前文件夹所有文件 ls列出所有文件包括隐藏文件 ls -a 4.创建文件夹 mkdir linuxLearn 5.创建文件 gedit command.sh在commmand.sh键入 echo hello echo hi? echo how are you? PS:touch hello.txt(也可以创建新…...