DVWA及其他常见网络靶场
常见网络靶场
- Metasploitable2
- 介绍:
- Metasploitable2 是一个用于安全培训和测试渗透测试工具的虚拟靶机。它故意配置了许多已知的安全漏洞,涵盖了操作系统、网络服务等多个方面。基于 Ubuntu Linux 操作系统构建,包含了如 Apache、MySQL、FTP 等多种常见服务。
- 应用场景:
- 主要用于渗透测试初学者学习和实践如何利用各种漏洞进行攻击。例如,使用者可以通过 Metasploitable2 学习使用 Metasploit 框架来发现和利用服务中的漏洞,如弱密码、未授权访问等,以加深对网络安全攻击手段的理解。
- 获取方式:
- 可以从官方网站或相关安全社区网站免费下载其镜像文件,然后通过虚拟机软件(如 VMware 或 VirtualBox)进行部署和使用。
- 介绍:
- DVWA(Damn Vulnerable Web Application)
- 介绍:
- DVWA 是一个用 PHP/MySQL 编写的 Web 应用程序,专门用于帮助安全爱好者、开发人员和学生学习和理解 Web 应用程序的安全漏洞。它提供了一系列的安全漏洞模块,包括 SQL 注入、跨站脚本攻击(XSS)、文件包含等。
- 应用场景:
- 对于 Web 安全的初学者来说,DVWA 是一个很好的实践平台。他们可以在一个相对安全的环境中,手动尝试各种 Web 攻击技术,并观察攻击的效果。例如,在学习 SQL 注入时,通过在 DVWA 的 SQL 注入模块中输入不同的恶意 SQL 语句,观察数据库的响应,从而深入理解 SQL 注入的原理和防范措施。
- 获取方式:
- 可以从其官方 GitHub 仓库(GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA))下载代码,然后在本地 Web 服务器环境(如 Apache 和 PHP 环境)中进行部署。部署过程包括配置数据库连接等步骤,完成配置后即可通过浏览器访问并开始实践。
- 介绍:
- OWASP Juice Shop
- 介绍:
- OWASP Juice Shop 是一个现代化的、充满漏洞的电商 Web 应用程序。它是由开放 Web 应用安全项目(OWASP)开发的,用于展示各种类型的 Web 安全漏洞,包括但不限于不安全的直接对象引用、安全配置错误等。
- 应用场景:
- 适合有一定 Web 安全基础的人员进一步提升技能。例如,安全研究人员可以通过对 Juice Shop 进行黑盒和白盒测试,研究复杂的 Web 攻击场景,如通过利用安全配置错误来获取管理员权限,或者利用不安全的直接对象引用获取其他用户的订单信息等。
- 获取方式:
- 可以从其官方网站(https://owasp.org/www - project - juice - shop/)获取安装指南,支持多种安装方式,如通过 Node.js 环境进行安装,也可以通过 Docker 容器方式快速部署并开始使用。
- 介绍:
- pWnOS
- 介绍:
- pWnOS 是一个网络安全培训和测试的靶场环境,包含了多种类型的漏洞,如网络服务漏洞、权限提升漏洞等。它的设计目标是提供一个真实的网络环境,模拟企业网络中可能出现的安全问题。
- 应用场景:
- 对于网络安全竞赛团队和安全培训机构来说,pWnOS 是一个很好的实践平台。可以通过设置不同的任务和挑战,让参赛人员或学员在规定时间内寻找和利用漏洞,完成相应的任务,如获取特定的敏感文件或者提升权限到管理员级别等。
- 获取方式:
- 通常可以在一些安全竞赛官方网站或者网络安全培训资源网站获取其镜像文件或者安装指南,然后通过虚拟机软件进行部署和使用。
- 介绍:
- SecGen
- 介绍:
- SecGen 是一个能够自动生成包含多种安全漏洞的虚拟网络环境的工具。它可以根据用户的需求生成不同类型的网络拓扑结构,并且在每个节点(如服务器、客户端等)中设置各种已知的安全漏洞。
- 应用场景:
- 在网络安全培训课程中,讲师可以使用 SecGen 快速生成定制化的网络靶场,用于给不同水平的学员提供针对性的培训。例如,对于高级学员,可以生成包含复杂的分布式系统漏洞的网络环境,而对于初学者,可以生成简单的、以 Web 安全漏洞为主的网络环境。
- 获取方式:
- 可以从其官方 GitHub 仓库(GitHub - cliffe/SecGen: Create randomly insecure VMs)获取代码并进行安装和使用。安装过程可能涉及到 Python 环境的配置等步骤。
- 介绍:
DVWA靶场
- 概述
- 定义:Damn Vulnerable Web Application(DVWA)是一个用 PHP/MySQL 编写的 Web 应用程序,它的主要目的是帮助安全爱好者、开发人员和学生学习和理解 Web 应用程序的安全漏洞。它故意设计了许多常见的 Web 安全漏洞,包括但不限于 SQL 注入、跨站脚本攻击(XSS)、文件包含等。
- 作用:通过提供一个易受攻击的 Web 应用环境,使用者可以在安全的、可控的环境中手动尝试各种 Web 攻击技术,并且观察攻击的效果,从而深入理解 Web 安全漏洞的原理、利用方式以及相应的防范措施。
- 漏洞模块介绍
- SQL 注入(SQL Injection)
- 原理:当用户输入的数据被不恰当地拼接在 SQL 语句中,攻击者就可以通过构造恶意的 SQL 语句来操纵数据库。例如,在登录页面,如果用户名和密码的验证 SQL 语句是直接拼接用户输入的,攻击者可以输入特殊字符来改变 SQL 语句的逻辑。
- DVWA 中的体现:在 DVWA 的 SQL 注入模块中,根据安全级别的不同,会展示不同程度的防护措施。在低安全级别下,很容易通过输入 SQL 语句(如
' or 1=1 --
)来绕过登录验证。随着安全级别的提高,防护措施会增强,例如对用户输入进行过滤和转义。
- 跨站脚本攻击(XSS - Cross - Site Scripting)
- 原理:攻击者将恶意脚本(通常是 JavaScript)注入到目标网站中,当其他用户访问被注入的页面时,脚本会在用户的浏览器中执行。这可能导致用户的敏感信息泄露,如登录凭证等。
- DVWA 中的体现:在 DVWA 的 XSS 模块中,同样有不同的安全级别。在低安全级别下,用户可以轻松地在评论框等输入区域输入 JavaScript 脚本,如
<script>alert('XSS')</script>
,当其他用户查看评论时就会弹出警告框。在高安全级别下,会对用户输入进行严格的过滤和编码,防止 XSS 攻击。
- 文件包含(File Inclusion)
- 原理:当 Web 应用程序在包含文件时没有正确地验证用户输入的文件名或路径,攻击者可以利用这个漏洞来包含恶意文件,或者访问敏感文件。
- DVWA 中的体现:在 DVWA 的文件包含模块中,攻击者可以尝试通过修改文件包含的参数来访问服务器上的其他文件。例如,在低安全级别下,通过修改文件包含的路径参数,可能可以访问服务器的配置文件等。
- SQL 注入(SQL Injection)
- 安全级别设置
- DVWA 提供了四种安全级别:Low(低)、Medium(中)、High(高)和 Impossible(几乎不可能被攻击)。
- Low 级别:这个级别几乎没有任何有效的安全防护措施,是为了让初学者能够轻松地利用各种漏洞进行攻击学习。例如,在 SQL 注入模块的低安全级别下,用户输入几乎直接被用于 SQL 查询,使得 SQL 注入攻击非常容易实现。
- Medium 级别:开始添加一些基本的安全防护措施,如对用户输入进行简单的过滤或验证。以 XSS 攻击为例,在中等安全级别下,可能会对用户输入的一些特殊字符进行过滤,但仍然存在可被攻击的漏洞。
- High 级别:提供了更高级的安全防护,模拟了更真实的安全防护场景。例如,在文件包含模块的高安全级别下,会对文件包含的参数进行严格的验证和限制,使得攻击难度大大增加。
- Impossible 级别:展示了如何正确地防范各种安全漏洞,采用了最佳实践的安全措施。这个级别可以帮助使用者了解在理想情况下,Web 应用应该如何避免被攻击。
- 安装和部署
- 传统方式(非 Docker)
- 需要在服务器或本地环境中安装 LAMP(Linux、Apache、MySQL、PHP)环境。首先安装 Apache web 服务器,然后安装 MySQL 数据库服务器,并设置好 root 用户密码。接着安装 PHP 以及相关的扩展,如 php - mysql、php - gd、php - mbstring 等。之后从官方 GitHub 仓库(GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA))下载 DVWA 代码,解压到 Apache 的网页根目录(如
/var/www/html
)下。配置 DVWA 的数据库连接,包括数据库服务器地址(通常是localhost)、数据库名称、用户名和密码。最后通过浏览器访问http://localhost/DVWA/setup.php
完成最后的设置,之后就可以通过http://localhost/DVWA/login.php
访问,默认用户名是admin
,密码是password
。
- 需要在服务器或本地环境中安装 LAMP(Linux、Apache、MySQL、PHP)环境。首先安装 Apache web 服务器,然后安装 MySQL 数据库服务器,并设置好 root 用户密码。接着安装 PHP 以及相关的扩展,如 php - mysql、php - gd、php - mbstring 等。之后从官方 GitHub 仓库(GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA))下载 DVWA 代码,解压到 Apache 的网页根目录(如
- Docker 方式
- 首先安装 Docker 和 Docker Compose。然后创建一个项目目录,在目录中编写
docker - compose.yml
文件,指定 DVWA 服务的镜像(如vulnerables/web - dvwa
)、端口映射(如将容器内的 80 端口映射到主机的 80 端口)、环境变量(如 MySQL 的用户名、密码和数据库名称)以及挂载目录(用于将主机目录挂载到容器的网页根目录)。创建挂载目录后,使用docker - compose up - d
启动容器,之后就可以通过主机 IP 地址访问 DVWA。
- 首先安装 Docker 和 Docker Compose。然后创建一个项目目录,在目录中编写
- 传统方式(非 Docker)
- 使用注意事项
- 由于 DVWA 包含大量的安全漏洞,它只能在合法的、受控制的环境中使用,如用于安全培训、教育或者在自己的测试网络中进行研究。
- 绝对不能将其部署在面向互联网的生产环境中,否则会导致严重的安全风险,因为攻击者可以轻易地利用这些漏洞来获取服务器的控制权或者窃取用户信息。
如何搭建DVWA
DVWA(Damn Vulnerable Web Application)是一个用于进行安全测试和学习 Web 应用程序漏洞的工具。以下是在本地环境搭建 DVWA 的详细步骤:
一、环境准备
-
安装 Web 服务器
- Apache:
- 如果你使用 Linux 系统(以 Ubuntu 为例),可以通过以下命令安装 Apache:
sudo apt - get update
sudo apt - get install apache2
- 安装完成后,可以通过在浏览器中访问
http://localhost
(如果是在本地服务器上搭建)来检查 Apache 是否安装成功。你应该会看到 Apache 的默认页面。
- 如果你使用 Linux 系统(以 Ubuntu 为例),可以通过以下命令安装 Apache:
- Nginx(可选):
- 如果你更倾向于使用 Nginx 作为 Web 服务器,在 Ubuntu 系统下可以使用以下命令安装:
sudo apt - get update
sudo apt - get install nginx
- 安装后同样可以在浏览器中访问
http://localhost
检查是否安装成功。Nginx 默认页面和 Apache 默认页面有所不同,这可以帮助你区分两者。
- 如果你更倾向于使用 Nginx 作为 Web 服务器,在 Ubuntu 系统下可以使用以下命令安装:
- Apache:
-
安装数据库服务器
- MySQL:
- 在 Ubuntu 系统下,安装 MySQL 的命令如下:
sudo apt - get update
sudo apt - get install mysql - server
- 安装过程中会要求你设置 root 用户的密码等信息。安装完成后,可以使用以下命令检查 MySQL 服务是否正在运行:
sudo systemctl status mysql
- 要进入 MySQL 命令行,可以使用
mysql -u root -p
,然后输入密码登录。
- 在 Ubuntu 系统下,安装 MySQL 的命令如下:
- MariaDB(可选):
- MariaDB 是 MySQL 的一个分支,在很多情况下可以作为 MySQL 的替代。在 Ubuntu 系统下安装命令如下:
sudo apt - get update
sudo apt - get install mariadb - server
- 同样可以通过类似检查 MySQL 的方式来检查 MariaDB 的运行状态。
- MariaDB 是 MySQL 的一个分支,在很多情况下可以作为 MySQL 的替代。在 Ubuntu 系统下安装命令如下:
- MySQL:
-
安装 PHP
- 在 Ubuntu 系统下,安装 PHP 及其相关模块(用于支持 DVWA 运行)的命令如下:
sudo apt - get update
sudo apt - get install php libapache2 - mod - php php - mysql php - gd php - xml php - cli
- 安装完成后,可以创建一个简单的 PHP 文件(例如
info.php
),内容为<?php phpinfo();?>
,将其放在 Apache(或 Nginx)的网站根目录下(通常是/var/www/html
),然后在浏览器中访问http://localhost/info.php
,可以查看 PHP 的相关配置信息,确保 PHP 安装成功并配置正确。
- 在 Ubuntu 系统下,安装 PHP 及其相关模块(用于支持 DVWA 运行)的命令如下:
二、下载和配置 DVWA
-
下载 DVWA
- 从 DVWA 的官方 GitHub 仓库(GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA))下载最新版本的 DVWA。你可以使用以下命令克隆仓库:
git clone https://github.com/digininja/DVWA.git
- 或者直接从网站上下载压缩包,然后解压到你的网站根目录(如
/var/www/html/dvwa
)。
- 从 DVWA 的官方 GitHub 仓库(GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA))下载最新版本的 DVWA。你可以使用以下命令克隆仓库:
-
配置数据库连接
- 进入 DVWA 的目录(如果是克隆的仓库,目录名为
DVWA
;如果是解压的文件,就是解压后的文件夹),找到config
目录下的config.inc.php.dist
文件。 - 将其复制一份并命名为
config.inc.php
。 - 使用文本编辑器打开
config.inc.php
,修改以下数据库连接配置:$_DVWA[ 'db_server' ] = '127.0.0.1';
(如果数据库在本地,一般保持这个 IP 地址即可,也可以根据实际情况修改)$_DVWA[ 'db_database' ] = 'dvwa';
(你可以将数据库名称修改为自己想要的名称,不过需要在数据库中创建对应的数据库)$_DVWA[ 'db_user' ] = 'root';
(这里填写数据库的用户名,如前面安装 MySQL 或 MariaDB 时设置的 root 用户)$_DVWA[ 'db_password' ] = 'yourpassword';
(填写对应的数据库用户密码)
- 进入 DVWA 的目录(如果是克隆的仓库,目录名为
-
创建数据库和表
- 打开终端,进入 MySQL(或 MariaDB)命令行(使用
mysql -u root -p
并输入密码)。 - 创建一个名为
dvwa
(如果在配置文件中修改了数据库名称,使用修改后的名称)的数据库,命令为CREATE DATABASE dvwa;
- 使用
USE dvwa;
命令切换到刚创建的数据库。 - 导入 DVWA 提供的数据库结构文件。在 DVWA 的目录下,有一个
dvwa.sql
文件,使用以下命令导入数据库结构:SOURCE /path/to/dvwa/dvwa.sql
(将/path/to/dvwa/
替换为实际的 DVWA 目录路径)
- 打开终端,进入 MySQL(或 MariaDB)命令行(使用
-
配置访问权限
- 确保
/var/www/html/dvwa
(假设你的 DVWA 安装在这个目录下)目录及其文件的权限设置正确。在 Ubuntu 系统下,可以使用以下命令设置权限:sudo chown -R www - data:www - data /var/www/html/dvwa
sudo chmod -R 755 /var/www/html/dvwa
- 这些权限设置可以让 Web 服务器(Apache 或 Nginx)能够正确地读取和执行 DVWA 的文件。
- 确保
-
访问 DVWA
- 在浏览器中访问
http://localhost/dvwa/setup.php
,如果一切配置正确,会看到 DVWA 的设置页面。按照页面上的提示完成最后的设置,如创建默认用户等。 - 设置完成后,就可以通过访问
http://localhost/dvwa/login.php
使用默认的用户名(admin
)和密码(password
)登录 DVWA,开始进行漏洞测试和学习了。
- 在浏览器中访问
在搭建 DVWA 过程中,请确保你的系统和软件都是最新版本,并且注意安全问题。因为 DVWA 是一个用于测试漏洞的工具,不要将其部署在对外公开的生产环境中,以免造成安全风险。
有哪些常用的Web漏洞可以在DVWA中进行测试?
DVWA(Damn Vulnerable Web Application)提供了多种可以用于测试的常见 Web 漏洞,以下是详细介绍:
-
SQL 注入(SQL Injection)
- 漏洞原理:
- SQL 注入是一种将 SQL 命令注入到数据平面输入(如网页表单输入框等)的攻击方式。攻击者通过在输入字段中注入恶意 SQL 语句,欺骗数据库执行这些非预期的命令。例如,在一个登录表单中,如果用户输入的用户名和密码没有经过正确的过滤和验证,攻击者可能会输入类似
' or '1'='1
这样的内容作为密码,来绕过登录验证。
- SQL 注入是一种将 SQL 命令注入到数据平面输入(如网页表单输入框等)的攻击方式。攻击者通过在输入字段中注入恶意 SQL 语句,欺骗数据库执行这些非预期的命令。例如,在一个登录表单中,如果用户输入的用户名和密码没有经过正确的过滤和验证,攻击者可能会输入类似
- 在 DVWA 中的测试:
- 在 DVWA 的 SQL 注入模块中,有不同的安全级别可以设置。在低安全级别下,输入框几乎没有任何过滤,你可以轻松地尝试各种 SQL 注入攻击。例如,使用
UNION SELECT
语句来查询数据库中的其他敏感信息,像查询用户表中的所有用户名和密码。在高安全级别下,系统会有一些简单的过滤措施,如对一些关键词进行过滤,这时你需要使用更高级的绕过技巧,如编码、使用替代字符等方式来进行注入攻击。
- 在 DVWA 的 SQL 注入模块中,有不同的安全级别可以设置。在低安全级别下,输入框几乎没有任何过滤,你可以轻松地尝试各种 SQL 注入攻击。例如,使用
- 漏洞原理:
-
跨站脚本攻击(XSS - Cross - Site Scripting)
- 漏洞原理:
- XSS 攻击允许攻击者将恶意脚本(通常是 JavaScript)注入到目标网站中。当受害者访问被注入恶意脚本的页面时,浏览器会执行这些脚本。例如,攻击者可以通过在评论区或用户输入框等地方注入恶意脚本,获取用户的登录凭证(如通过窃取
Cookie
)或执行其他恶意操作,如修改页面内容。
- XSS 攻击允许攻击者将恶意脚本(通常是 JavaScript)注入到目标网站中。当受害者访问被注入恶意脚本的页面时,浏览器会执行这些脚本。例如,攻击者可以通过在评论区或用户输入框等地方注入恶意脚本,获取用户的登录凭证(如通过窃取
- 在 DVWA 中的测试:
- DVWA 的 XSS 模块也分为不同安全级别。在低安全级别下,输入的脚本可以很容易地被执行。例如,在一个留言板功能中,你可以输入
<script>alert('XSS');</script>
,当页面加载时就会弹出一个警告框。在高安全级别下,系统会对输入进行过滤,如对<script>
标签进行过滤。这时攻击者可以尝试使用其他方式,如事件属性(如onmouseover
)来触发恶意脚本,像<a href="#" onmouseover="alert('XSS')">Click me</a>
。
- DVWA 的 XSS 模块也分为不同安全级别。在低安全级别下,输入的脚本可以很容易地被执行。例如,在一个留言板功能中,你可以输入
- 漏洞原理:
-
文件包含漏洞(File Inclusion)
- 漏洞原理:
- 文件包含漏洞是由于 Web 应用程序在包含文件时没有对用户可控的输入进行严格的过滤。这使得攻击者可以通过操纵输入,让服务器包含一个非预期的文件。例如,在一个 PHP 应用程序中,如果使用
include()
或require()
函数来包含文件,并且文件路径是由用户输入决定的,攻击者可能会尝试包含系统敏感文件,如/etc/passwd
(在 Linux 系统中)来获取系统用户信息。
- 文件包含漏洞是由于 Web 应用程序在包含文件时没有对用户可控的输入进行严格的过滤。这使得攻击者可以通过操纵输入,让服务器包含一个非预期的文件。例如,在一个 PHP 应用程序中,如果使用
- 在 DVWA 中的测试:
- 在 DVWA 的文件包含模块中,不同安全级别也有不同的防护措施。在低安全级别下,你可以相对容易地尝试本地文件包含(LFI)和远程文件包含(RFI)攻击。例如,对于本地文件包含,你可以尝试通过输入
../
等相对路径来访问服务器上的其他文件。在高安全级别下,系统会对输入进行更多的限制和验证,比如限制文件扩展名等,这时攻击者需要寻找系统的逻辑漏洞来进行攻击,如利用服务器的配置漏洞或特殊的编码方式来绕过过滤。
- 在 DVWA 的文件包含模块中,不同安全级别也有不同的防护措施。在低安全级别下,你可以相对容易地尝试本地文件包含(LFI)和远程文件包含(RFI)攻击。例如,对于本地文件包含,你可以尝试通过输入
- 漏洞原理:
-
跨站请求伪造(CSRF - Cross - Site Request Forgery)
- 漏洞原理:
- CSRF 攻击利用了用户在目标网站已经登录的状态。攻击者构造一个恶意的请求,诱使受害者在不知情的情况下发送这个请求到目标网站。例如,攻击者在一个恶意网站上放置一个看似无害的链接或按钮,当用户点击时,会在用户已经登录的目标网站上执行一个操作,如修改用户密码、转账等。
- 在 DVWA 中的测试:
- 在 DVWA 的 CSRF 模块中,你可以了解如何构造恶意的请求。在低安全级别下,很容易构造一个恶意的 HTML 页面,其中包含一个自动提交的表单,当受害者访问这个页面时,就会触发 CSRF 攻击。在高安全级别下,目标网站可能会采取一些防护措施,如使用验证码、检查请求头中的
Referer
字段等,这时你需要思考如何绕过这些防护措施来成功实施攻击。
- 在 DVWA 的 CSRF 模块中,你可以了解如何构造恶意的请求。在低安全级别下,很容易构造一个恶意的 HTML 页面,其中包含一个自动提交的表单,当受害者访问这个页面时,就会触发 CSRF 攻击。在高安全级别下,目标网站可能会采取一些防护措施,如使用验证码、检查请求头中的
- 漏洞原理:
-
命令注入(Command Injection)
- 漏洞原理:
- 命令注入是指攻击者通过在输入中注入操作系统命令,使得服务器执行这些非预期的命令。这种漏洞通常出现在 Web 应用程序调用外部命令来处理用户输入的情况下。例如,在一个简单的系统管理界面中,如果用户输入的主机名没有经过严格过滤就被用于执行
ping
命令,攻击者可以注入额外的命令,如;rm -rf /
(在 Linux 系统中,这是一个非常危险的删除所有文件的命令)。
- 命令注入是指攻击者通过在输入中注入操作系统命令,使得服务器执行这些非预期的命令。这种漏洞通常出现在 Web 应用程序调用外部命令来处理用户输入的情况下。例如,在一个简单的系统管理界面中,如果用户输入的主机名没有经过严格过滤就被用于执行
- 在 DVWA 中的测试:
- 在 DVWA 的命令注入模块,通过调整安全级别可以看到不同的防护情况。在低安全级别下,输入的命令几乎可以直接被执行,你可以尝试注入各种操作系统命令来获取服务器的敏感信息或进行破坏。在高安全级别下,系统会对输入进行过滤,如过滤掉一些危险的字符(如
;
),这时攻击者需要研究如何利用系统允许的字符和功能来绕过过滤,执行恶意命令。
- 在 DVWA 的命令注入模块,通过调整安全级别可以看到不同的防护情况。在低安全级别下,输入的命令几乎可以直接被执行,你可以尝试注入各种操作系统命令来获取服务器的敏感信息或进行破坏。在高安全级别下,系统会对输入进行过滤,如过滤掉一些危险的字符(如
- 漏洞原理:
除了DVWA,还有哪些工具可以用于Web漏洞测试?
除了 DVWA 之外,还有以下一些常用于 Web 漏洞测试的工具:
漏洞扫描工具
- Acunetix Web Vulnerability Scanner(AWVS):这是一款知名的网络漏洞扫描工具,通过网络爬虫测试网站安全,能检测流行安全漏洞,如 SQL 注入、跨站脚本等。它具有自动的客户端脚本分析器,可对 Ajax 和 Web2.0 应用程序进行安全性测试,还拥有业内先进且深入的 SQL 注入和跨站脚本测试功能,以及丰富的报告功能,包括 VISA PCI 依从性报告等1.
- Nexpose:功能强大的漏洞扫描工具,可以更新其漏洞数据库,以保证能扫描到最新的漏洞。它还能指出哪些漏洞可以被 Metasploit Exploit,哪些漏洞在 Exploit-db 里面有 exploit 的方案,并生成非常详细的报告,涵盖众多统计功能和漏洞的详细信息1.
- OpenVAS:类似于 Nessus 的综合型漏洞扫描器,可用来识别远程主机、Web 应用存在的各种漏洞。它使用 NVT(Network Vulnerabilty Test 网络漏洞测试)脚本对多种远程系统的安全问题进行检测,经过多年发展,已成为好用的开源漏洞扫描工具,功能可与一些商业漏洞扫描工具媲美1.
- Nikto:一款流行的开源 Web 服务器扫描程序,可对 Web 服务器进行全面测试,检查危险文件、过时的服务器软件和其他潜在漏洞。能在 230 多种服务器上扫描出 3300 多种有潜在危险的文件、CGI 和超过 625 种服务器版本及其他问题.
- Xray:优秀的漏洞扫描工具,目前只有命令行版本,通过 config.yaml 配置文件启动。其功能强大,能检测多种 Web 漏洞,但对于新手而言,上手难度相对较大,需对命令行操作较为熟悉.
渗透测试框架
- Metasploit Framework:强大的渗透测试框架,集合了大量的 exploits、payloads 以及 post-exploitation 模块,支持漏洞的自动识别、利用和后续操控。用户可在其中搜索相关的 exploit 模块,配置目标 IP 和必要参数后执行,实现漏洞的复现和利用.
- Burp Suite:用于攻击 Web 应用程序的集成平台,包含了许多工具,如代理、爬虫、扫描器、爆破器等,这些工具通过协同工作,可有效分享信息。它支持插件,用户能够根据具体需求自定义和增强工具的功能,从而更有效地进行渗透测试和漏洞分析1.
其他工具
- OWASP ZAP(Zed Attack Proxy):开源的 Web 应用安全扫描器和漏洞复现工具,能自动化地对 Web 应用进行爬取、注入攻击、XSS 攻击等多种安全测试,并复现常见漏洞。使用时,启动 ZAP 代理并设置浏览器通过其代理访问目标站点,它会自动捕获并分析所有 HTTP (S) 流量,通过主动扫描可复现漏洞2.
- SQLMap:流行的开源网站渗透测试工具,可自动查找网站数据库中的 SQL 注入漏洞,具有强大的检测引擎和许多有用的功能,支持一系列数据库服务器及六种 SQL 注入技术.
- WebScarab:可以分析使用 HTTP 和 HTTPS 协议进行通信的应用程序,能够以最简单的形式记录观察的会话,并允许操作人员以各种方式查看会话,帮助开发人员调试难题,也助安全专业人员识别漏洞1.
- WebInspect:强大的 Web 应用程序扫描程序,可确认 Web 应用中已知的和未知的漏洞,还能检查 Web 服务器是否正确配置,并尝试常见的 Web 攻击,如参数注入、跨站脚本、目录遍历攻击等1.
详细介绍一下Metasploit框架
-
概述
- Metasploit 是一个非常强大的开源渗透测试框架,由 Rapid7 公司开发和维护。它提供了大量的工具和资源,用于发现、利用和验证系统和应用程序中的安全漏洞。其核心是一个模块化的框架,包含了各种漏洞利用代码(exploits)、攻击载荷(payloads)、辅助模块(auxiliary)和后渗透模块(post - modules)。
-
模块分类
- Exploits 模块
- 这是 Metasploit 框架的核心部分之一。Exploits 模块是用于利用特定漏洞的代码。例如,当发现一个目标系统存在某个版本的软件漏洞(如 Apache 服务器的某个已知漏洞)时,可以在 Metasploit 中搜索对应的 exploit 模块。这些模块利用了目标系统或应用程序中的安全缺陷,如缓冲区溢出、SQL 注入漏洞等,来获取对目标系统的访问权限。每个 exploit 模块都针对特定的漏洞类型和目标软件版本进行设计,并且在模块内部包含了触发漏洞和执行攻击所需的步骤。
- Payloads 模块
- 当 exploit 成功利用目标系统的漏洞后,payload 就是在目标系统上执行的代码。Payloads 可以有多种类型,如创建一个反向 shell,使得攻击者能够在目标系统上执行命令并获取反馈。常见的 payload 包括 meterpreter,它是一种高级的、多功能的 payload,提供了丰富的功能,如文件系统操作、进程管理、网络通信等。通过 meterpreter,攻击者可以在目标系统上进行诸如上传和下载文件、查看系统信息、执行命令等操作,就好像在本地操作目标系统一样。
- Auxiliary 模块
- 辅助模块用于执行各种辅助任务,如信息收集、扫描等。例如,有用于扫描目标网络中开放端口的模块,也有用于枚举目标系统上运行的服务版本的模块。这些模块本身通常不直接用于获取系统访问权限,但为渗透测试提供了重要的前置信息。通过使用辅助模块,可以更好地了解目标系统的网络拓扑结构、服务类型和版本等信息,从而为后续的漏洞利用提供支持。例如,通过扫描目标系统的开放端口,可以确定哪些服务可能存在漏洞,进而选择合适的 exploit 模块。
- Post - Modules
- 后渗透模块用于在成功渗透目标系统后,进行更深入的操作。这些操作包括权限提升、数据提取、持久化等。例如,在获得了一个普通用户权限的 shell 后,可以使用后渗透模块来尝试将权限提升到管理员级别。或者,可以使用后渗透模块来提取目标系统中的敏感数据,如用户凭证、配置文件等,并且可以设置一些后门程序,以确保在后续的时间内能够持续访问目标系统。
- Exploits 模块
-
使用流程
- 目标识别与信息收集
- 首先,需要确定渗透测试的目标,包括目标系统的 IP 地址、开放的端口、运行的服务及其版本等信息。可以使用 Metasploit 中的辅助模块进行扫描,如使用
nmap
集成模块来扫描目标系统的网络端口情况,或者使用特定服务的枚举模块来确定服务的详细信息。例如,如果目标是一个 Web 服务器,可以使用 HTTP 枚举模块来查看服务器上运行的 Web 应用程序的版本和相关配置信息。
- 首先,需要确定渗透测试的目标,包括目标系统的 IP 地址、开放的端口、运行的服务及其版本等信息。可以使用 Metasploit 中的辅助模块进行扫描,如使用
- 漏洞利用规划
- 根据收集到的信息,在 Metasploit 的 exploit 模块库中搜索合适的漏洞利用模块。例如,如果发现目标系统运行的是一个旧版本的软件,并且已知该版本存在特定的漏洞,就可以寻找对应的 exploit 模块。同时,需要根据目标系统的环境和防御机制选择合适的 payload。例如,如果目标系统有防火墙限制了某些类型的网络连接,就需要选择一种能够绕过防火墙或者利用防火墙允许的连接方式的 payload。
- 执行漏洞利用与攻击
- 配置好 exploit 模块和 payload 后,就可以在 Metasploit 框架中执行攻击。在执行过程中,Metasploit 会根据 exploit 模块中的代码尝试触发目标系统的漏洞,并将 payload 发送到目标系统。如果漏洞利用成功,payload 就会在目标系统上执行,从而建立起与目标系统的连接。例如,成功利用一个远程代码执行漏洞后,可能会在目标系统上建立一个反向 shell,使得攻击者能够与目标系统进行交互。
- 后渗透操作
- 一旦成功建立了与目标系统的连接,就可以使用后渗透模块进行进一步的操作。这包括提升权限,例如通过利用操作系统或应用程序中的权限提升漏洞,将当前获得的权限提升到更高的级别;提取敏感数据,如用户账户信息、密码文件、数据库内容等;还可以进行持久化操作,设置后门程序,确保后续能够继续访问目标系统,即使目标系统进行了重启或者部分修复操作。
- 目标识别与信息收集
-
优势与局限性
- 优势
- 丰富的模块资源:Metasploit 拥有大量的预编写模块,涵盖了众多的软件漏洞和攻击场景,使得渗透测试人员能够快速地找到合适的工具来进行测试。
- 易于使用和学习:它有相对直观的命令行界面和图形界面(如 Metasploit Pro),并且有详细的文档和社区支持,方便新手学习和上手。
- 灵活性和扩展性:可以通过编写自己的模块或者整合其他工具来扩展 Metasploit 的功能,适应不同的渗透测试需求。
- 局限性
- 合法性问题:如果使用不当,Metasploit 可能会被用于非法的黑客活动。因此,在使用时必须确保遵守法律法规,并且获得了合法的授权。
- 依赖于已知漏洞:主要是基于已知的漏洞和攻击技术,对于一些新出现的或者未被发现的漏洞,可能无法及时提供有效的模块。
- 目标环境的复杂性:在复杂的网络环境和高度安全防护的系统中,可能会受到各种限制,如入侵检测系统(IDS)的检测、防火墙的拦截等,从而影响漏洞利用的成功率。
- 优势
相关文章:
DVWA及其他常见网络靶场
常见网络靶场 Metasploitable2 介绍: Metasploitable2 是一个用于安全培训和测试渗透测试工具的虚拟靶机。它故意配置了许多已知的安全漏洞,涵盖了操作系统、网络服务等多个方面。基于 Ubuntu Linux 操作系统构建,包含了如 Apache、MySQL、FT…...
API接口安全:电商数据保护的坚固防线
随着电子商务的蓬勃发展,电商平台的数据安全和隐私保护成为了至关重要的议题。API(应用程序编程接口)作为电商平台与外部系统交互的桥梁,其安全性直接关系到整个平台的数据保护能力。本文将从API接口安全的重要性、面临的安全威胁…...
springboot437校园悬赏任务平台(论文+源码)_kaic
摘 要 使用旧方法对校园悬赏任务平台的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在校园悬赏任务平台的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的校…...
可视化报表如何制作?一文详解如何用报表工具开发可视化报表
在如今这个数据驱动的商业时代,众多企业正如火如荼地推进数字化转型,力求在激烈的市场竞争中占据先机。然而,随着业务规模的扩大和运营复杂度的提升,企业的数据量爆炸式增长,传统报表格式单一、信息呈现密集且不易解读…...
STM32 HAL库之SDIO例程 Micro SD卡 - 2
1、硬件图 2、示例代码 根据提示配置SDCLK为72/3 24MHz。 static void MX_SDIO_SD_Init(void) {/* USER CODE BEGIN SDIO_Init 0 */SD_InitTypeDef Init;Init.ClockEdge SDIO_CLOCK_EDGE_RISING;Init.ClockBypass SDIO_CLOCK_BYPASS_DISABLE;Init.ClockPo…...
架构实践02-高性能架构模式
零、文章目录 架构实践02-高性能架构模式 1、 高性能数据库集群:读写分离 (1)引言 背景:随着业务的发展和数据的增长,单个数据库服务器难以满足需求,必须考虑数据库集群。目的:介绍高性能数…...
leetcode-73.矩阵置零-day5
class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …...
Docker与虚拟机:虚拟化技术的差异解析
在信息技术飞速发展的今天,虚拟化技术已成为现代IT架构不可或缺的一部分。而虚拟化从技术层面划分则分为以下几种: 完全虚拟化:虚拟机能够完全模拟底层硬件的特权指令的执行过程,客户操作系统无须进行修改。 硬件辅助虚拟化&#…...
数据结构——ST表
ST表的定义 ST表,又名稀疏表,是一种基于倍增思想,用于解决可重复贡献问题的数据结构 倍增思想 这里列举一个去寻找一个区间内的最大值的例子 因为每次会将将区间增大一倍,所以才被称之为倍增思想 ,这种思想十分好用…...
flutter命令行直接指定设备
> flutter driver Found 3 connected devices:sdk gphone16k x86 64 (mobile) • emulator-5554 • android-x64 • Android 15 (API 35) (emulator)Linux (desktop) • linux • linux-x64 • Ubuntu 22.04.5 LTS 6.8.0-49-genericChrome (…...
【STM32】RTT-Studio中HAL库开发教程九:FLASH中的OPT
文章目录 一、概要二、内部FLASH排布三、内部FLASH主要特色四、OTP函数介绍五、测试验证 一、概要 STM32系列是一款强大而灵活的微控制器,它的片内Flash存储器可以用来存储有关代码和数据,在实际应用中,我们也需要对这个存储器进行读写操作。…...
COLA学习之代码规范(二)
小伙伴们,你们好,我是老寇,上一节,我们学习了DDD相关术语,继续跟老寇学习COLA代码规范 代码规范 包命名 层次包名功能必选Adapter层web处理页面请求Controller否Adapter层wireless处理无线端适配否Adapter层wap处理…...
【优选算法】二分算法(在排序数组中查找元素的第一个和最后一个位置,寻找峰值,寻找排序数组中的最小值)
二分算法简介: 提到二分我们可能都会想起二分查找,二分查找要求待查找的数组是有序的,与我们今天讲的二分算法不同,并不是数组元素严格按照有序排列才可以使用二分算法,只要数组中有一个点可以将数组分为两个部分&…...
数据结构-排序(来自于王道)
排序的基本概念 插入排序 在这个算法中,除了输入的数组本身,没有使用额外的数据结构来存储数据,所有的操作都是在原数组上进行的。因此,无论输入数组的大小 n 是多少,算法执行过程中所占用的额外空间是固定的ÿ…...
用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!
用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!(结尾附完整代码) 简介 2048 是一个简单而又令人上瘾的数字拼图游戏。玩家通过滑动方块使相同数字的方块合并,目标是创造出数字 2048!在这篇…...
《C++:计算机视觉图像识别与目标检测算法优化的利器》
在当今科技飞速发展的时代,计算机视觉领域正经历着前所未有的变革与突破。图像识别和目标检测作为其中的核心技术,广泛应用于安防监控、自动驾驶、智能医疗等众多领域,其重要性不言而喻。而 C语言,凭借其卓越的性能、高效的资源控…...
医学分割数据集白内障严重程度分割数据集labelme格式719张3类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):719 标注数量(json文件个数):719 标注类别数:3 标注类别名称:["normal","severe","mi…...
VirtIO实现原理之数据结构与数据传输演示(4)
接前一篇文章:VirtIO实现原理之数据结构与数据传输演示(3) 本文内容参考: VirtIO实现原理——vring数据结构-CSDN博客 VirtIO实现原理——数据传输演示-CSDN博客 特此致谢! 一、数据结构总览 2. 相关数据结构 前文书介绍了《Virtual I/O Device (VIRTIO) Version 1.3…...
C语言:详解指针最终篇(3)
一.字符指针变量 在指针的类型中我们知道有一种指针类型为字符指针char*。一般我们这样使用: 我们来看另一种使用方式: 这个常量字符串就相当于它本身首字符的地址,收地址加上方括号下标就可以访问该表达式中对应下标的元素。可以把该表达式…...
03篇--二值化与自适应二值化
二值化 定义 何为二值化?顾名思义,就是将图像中的像素值改为只有两种值,黑与白。此为二值化。 二值化操作的图像只能是灰度图,意思就是二值化也是一个二维数组,它与灰度图都属于单信道,仅能表示一种色调…...
Java 小抄|解析 JSON 并提取特定层级数据
文章目录 前言环境准备依赖库 示例代码JSON 数据Java 类定义解析 JSON 数据代码解释 结论 前言 在日常开发中,我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据,并通过流式处理提取特定层级的数据。我们将…...
qt 设置系统缩放为150%,导致的文字和界面的问题
1 当我们设置好布局后,在100%的设置里面都是正常的,但是当我们修改缩放为150%后,字体图标,界面大小就出现问题了,这就需要我们设置一些参数。 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QCoreAppl…...
【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)
1. 鼠标左右拖动 在和 series 同级的地方配置 dataZoom: dataZoom: [{type: inside, // inside 鼠标左右拖图表,滚轮缩放; slider 使用滑动条start: 0, // 左边的滑块位置,表示从 0 开始显示end: 60, // 右边的滑块位置…...
深度学习入门课程学习笔记(第25周)
摘要 本周报的目的在于汇报第25周的学习成果,本周主要聚焦于基于深度学习的目标检测领域算法的总体框架的学习。 在这本周的学习中,内容主要涵盖了目标检测算法的发展历程,包括发展历程和发展阶段,然后纤细说明了目标检测算法的…...
【Python】Matplotlib基本图表绘制
目录 Matplotlib基本图表绘制折线图更多外观外观类型颜色线条样式图例位置使用本地字体 散点图条形图横向条形图 直方图频率分布直方图 Matplotlib基本图表绘制 折线图 from matplotlib import pyplot as plt import matplotlib #字典类型的字体预设,键值对依次…...
【1211更新】腾讯混元Hunyuan3D-1文/图生3D模型云端镜像一键运行
目录 项目介绍 显存占用 11月21 新增纹理烘焙模块Dust3R 烘焙相关参数: AutoDL云端镜像 启动说明 标准模型下载 【1212更新】腾讯混元Hunyuan3D-1文图生3D模型云端镜像一键运行 项目介绍 https://github.com/Tencent/Hunyuan3D-1 腾讯混元 3D 生成模型,支持…...
工业大数据分析算法实战-day05
文章目录 day05分而治之中的MARS算法神经网络逼近能力解释 day05 今天是第5天,昨日从统计分析开始利用统计学的知识判断当前样本的分布以及估计总体的参数和假设检验的情况,以及介绍了线性回归算法的相关优化点,但是毕竟线性回归是线性划分的…...
Go 语言结构
Go 语言结构 Go 语言,也称为 Golang,是一种由 Google 开发和支持的静态类型、编译型编程语言。它于 2009 年首次发布,旨在提高多核处理器、网络资源和大型代码库的性能。Go 语言以其简洁的语法、并发支持和强大的标准库而闻名,特别适合构建高性能的网络服务和分布式系统。…...
【Python篇】PyQt5 超详细教程——由入门到精通(序篇)
文章目录 PyQt5 超详细入门级教程前言序篇:1-3部分:PyQt5基础与常用控件第1部分:初识 PyQt5 和安装1.1 什么是 PyQt5?1.2 在 PyCharm 中安装 PyQt51.3 在 PyCharm 中编写第一个 PyQt5 应用程序1.4 代码详细解释1.5 在 PyCharm 中运…...
9_less教程 --[CSS预处理]
LESS(Leaner Style Sheets)是一种CSS预处理器,它扩展了CSS语言,增加了变量、嵌套规则、混合(mixins)、函数等功能,使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容ÿ…...
macOS:安装第三方软件
基于安全性考虑,Mac 系统通常不允许安装那些从网络上下载下来的第三方软件包。 比如,在打开镜像盘时,报错为“该镜像已损坏,请移至废纸篓”,或者打开软件时提示“XXX 已损坏,打不开。您应该将它移到废纸篓”…...
HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用
拿走请吱一声,点个关注吧,代码如下,网页有移动端适配 HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width…...
昇思25天学习打卡营第33天|共赴算力时代
文章目录 一、平台简介二、深度学习模型2.1 处理数据集2.2 模型训练2.3 加载模型 三、共赴算力时代 一、平台简介 昇思大模型平台,就像是AI学习者和开发者的超级基地,这里不仅提供丰富的项目、模型和大模型体验,还有一大堆经典数据集任你挑。…...
IAR环境下STM32静态库编译及使用
IAR环境下STM32静态库编译及使用 前言 最近了解到了STM32的静态库与动态库,在此记录一下STM32静态库的生成与使用。 静态库的作用主要是对代码进行封装及保护,使其他使用者只知其然而不知其所以然,因为封装后的静态库只有.h文件没有.c文件。…...
前端如何性能优化
前端性能优化是提高网页加载速度和响应速度的重要手段。优化前端性能不仅能提升用户体验,还能提高SEO排名,降低服务器负担,节省带宽等。下面是一些常见的前端性能优化方法: 1. 减少 HTTP 请求 每个页面资源(如图片、…...
【开源】为Stable Diffusion工作流程提供的一个更加灵活易用的Web界面
一个开源项目,旨在为Stable Diffusion工作流程提供一个更加灵活、易用的Web界面。这个项目特别适用于图像生成和编辑,具有以下几个显著特点: 分层和非破坏性编辑:OpenDream支持非破坏性编辑,允许用户在保留原始图像数据…...
安全见闻(1)
Target 开阔见闻,不做井底之蛙 Trial 建议 前期小白到中级红队:把python学好 C\C:偏向底层,适合逆向,不适合前期web渗透 编程语言 C语言: 一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入…...
基于32单片机的RS485综合土壤传感器检测土壤PH、氮磷钾的使用(超详细)
1-3为RS485综合土壤传感器的基本内容 4-5为基于STM32F103C8T6单片机使用RS485传感器检测土壤PH、氮磷钾并显示在OLED显示屏的相关配置内容 注意:本篇文件讲解使用的是PH、氮磷钾四合一RS485综合土壤传感器,但里面的讲解内容适配市面上的所有多合一的RS…...
SQL server学习03-创建和管理数据表
目录 一,SQL server的数据类型 1,基本数据类型 2,自定义数据类型 二,使用T-SQL创建表 1,数据完整性的分类 2,约束的类型 3,创建表时创建约束 4,任务 5,由任务编写…...
Windows 系统下 Python 环境安装
一、引言 Python 作为一种广泛应用的编程语言,在数据分析、人工智能等领域发挥着重要作用。本文将详细介绍在 Windows 系统上安装 Python 环境的步骤。 二、安装前准备 系统要求 Windows 7 及以上版本一般都能支持 Python。硬件方面,通常 2GB 内存、几…...
Redis 在Go项目中的集成和统一管理
本节我们在项目中安装和集成 go-redis,让项目能访问Redis,后面实战项目中的用户认证体系会依赖Redis来实现,像Token、Session这些都是在Redis中存储的。 本节大纲如下: Redis的使用场景有不少,不过有一点需要提醒的…...
Hive——HQL数据定义语言
文章目录 Hive HQL数据查询语言更多大数据资源持续更新中。。。学习目标一、HQL数据定义语言(DDL)概述1、DDL语法的作用2、Hive中DDL使用☆ 创建数据库☆ 查询数据库☆ 切换数据库☆ 修改数据库☆ 删除数据库 二、Hive DDL建表基础1、完整建表语法树2、H…...
Python机器视觉的学习
一、二值化 1.1 二值化图 二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图。 1.2 阈值法 阈值法(Thresholding)是一种图像分割技术,旨在根据像素的灰度值或颜色值将图像分成不同的区域。该方法…...
使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法
使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法 一、问题现象:二、出现原因三、解决方法:1、升级Navicat版本:2、使用低版本的postgreSQL:3、修改Navicat的dll二进制文件:navicat版本15nav…...
秒杀抢购场景下实战JVM级别锁与分布式锁
背景历史 在电商系统中,秒杀抢购活动是一种常见的营销手段。它通过设定极低的价格和有限的商品数量,吸引大量用户在特定时间点抢购,从而迅速增加销量、提升品牌曝光度和用户活跃度。然而,这种活动也对系统的性能和稳定性提出了极…...
【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(四)
目录 ARC规则 规则 对象型变量不能作为C语言结构体的成员 显式转换id和void* 属性 数组 ARC规则 规则 在ARC有效的情况下编译源代码必须遵守一定的规则: 主要解释一下最后两条 对象型变量不能作为C语言结构体的成员 要把对象型变量加入到结构体成员中时&a…...
Reactor 响应式编程(第一篇:Reactor核心)
系列文章目录 Reactor 响应式编程(第一篇:Reactor核心) Reactor 响应式编程(第二篇:Spring Webflux) Reactor 响应式编程(第三篇:R2DBC) Reactor 响应式编程(…...
数据挖掘之聚类分析
聚类分析(Clustering Analysis) 是数据挖掘中的一项重要技术,旨在根据对象间的相似性或差异性,将对象分为若干组(簇)。同一簇内的对象相似性较高,而不同簇间的对象差异性较大。聚类分析广泛应用…...
修改uniapp下拉刷新圆圈颜色
直接看图 修改前就是常规的绿色 自定义更符合我们的软件 直接说方法 修改 在App.vue的style样式里添加一行 .uni-page-refresh--refreshing .uni-page-refresh__path{stroke:#FF2442; }我是通过 不执行 uni.stopPullDownRefresh(); 下拉刷新 之后通过F12看出来的 希望可以帮…...
SparkSQL与Hive的整合
文章目录 SparkSQL与Hive的整合1.1. Spark On Hive1.1.1. Hive的准备工作1.1.2. Spark的准备工作1.1.3. Spark代码开发1.1.4. Spark On Hive案例 1.2. Hive On Spark1.3. SparkSQL命令行1.4. SparkSQL分布式查询引擎1.4.1. 开启ThriftServer服务1.4.2. beeline连接ThriftServer…...