当前位置: 首页 > news >正文

upload-labs漏洞靶场~文件上传漏洞

在这里插入图片描述

寻找测试网站的文件上传的模块,常见:头像上传,修改上传,文件编辑器中文件上传,图片上传、媒体上传等,通过抓包上传恶意的文件进行测试,上传后缀名 asp php aspx 等的动态语言脚本,查看上传时的返回信息,判断是否能直接上传,如果不能直接上传,再进行测试上传突破,例如上传文件的时候只允许图片格式的后缀,但是修改文件时,却没有限制后缀名,图片文件可以修改成动态语言格式如php,则可能访问这个文件的 URL 直接 getshell,可以控制网站;

# 首先我们创建一个木马程序,让它作为文件进行上传,达到我们目的

image-20240731110507503

Pass-01(绕过前端js检测)

# 本题先查看网页源码,把检测js的内容删掉,然后直接上传1.php

image-20240731114443470

image-20240731114506287

# 访问图片的页面,通关

image-20240731110456895

Pass-02(绕过contnet-type)

# 有些上传模块,会对 http 的类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败。因为服务端是通过 content-type 判断类型,content-type 在客户端可被修改。则此文件上传也有可能被绕过的风险;
# 所以这道题需要我们抓包,然后查看contnet-type的类型

image-20240731111846806

# 发现后缀名要求是jpeg格式,所以我们插入的格式为1.jpg,然后我们在客户端抓包后再改成1.php

image-20240731111837237

#  修改好后放包,访问文件路径,成功

image-20240731111715771

Pass-03(绕过黑名单上传)

# 上传模块,有时候会写成黑名单限制,在上传文件的时获取后缀名,再把后缀名与程序中黑名单进行检测, 如果后缀名在黑名单的列表内,文件将禁止文件上传;
# 本题我们发现提示不允许上传asp,aspx.php,jsp后缀名的文件

image-20240731112311749

# 因此我们就需要把它的格式替换成其他格式的后缀,也能在其中执行的php后缀名
上传目标中间件可支持的环境的语言脚本即可,如.phtml、php3、php5;

image-20240731112348168

image-20240731112940348

Pass-04(htaccess 重写解析绕过上传)

# 上传模块,黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess .htaccess 文件的作用是可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP 地址的用户、只允许特定 IP 地址的用户、禁止目录列表,以及使用其他文件作为 index 文件等一些功能;在 htaccess 里写入 SetHandler application/x-httpd-php 则可以文件重写成 php 文件。要 htaccess 的规则生效 则需要在 apache 开启 rewrite 重写模块,因为 apache 是多数都开启这个模块,所以规则一般都生效;
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>

image-20240731113230027

# 它将所有的.jpg文件解析为.php 然后访问1.jpg即可获取

image-20240731113343601

image-20240731115704688

Pass-05(大小写绕过上传)

# 获取文件后缀名进行判断,如果后缀在这个字典里就禁止上传。
$deny_ext =array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
# 因此我们要用没有被过滤掉的文件名字

image-20240731113512503

# 发现1.php可以,所以给它用大小写来绕过,最后得出结果

image-20240731113536801

image-20240731113615408

Pass-06(利用 windows 系统特征空格绕过上传)

# 由于在windpws系统中可以通过空格和点来表示空白

image-20240731113913864

# 所以我们用空格来做此题,最后发现执行成功

image-20240731114018090

image-20240731114054590

Pass-07(利用 windows 系统特征点绕过上传)

# 同Pass-06题一样,不过这道题是使用点来进行绕过

image-20240731141058352

# 所以我们只需要抓包在输入的地方多加点就可以了

image-20240731141505876

image-20240731141527622

Pass-08(::$DATA绕过上传)

- Windows本地文件系统中的文件流(File Streams):
- 当从 Windows shell 命令行指定创建文件时,流的完整名称为 "filename:stream name:stream type",如示例中所示: "myfile.txt:stream1:$DATA"# 上面都是一些黑名单被绕过的,如果黑名单上传检测后,没有限定后缀名,绕过的方法很多,与黑名单相对的就是白名单,使用白名单验证会相对比较安全,因为只允许指定的文件后缀名。但是如果有可控的参数目录,也存在被绕过的风险;
# 如果后缀名没有对::$DATA 进行判断,利用 windows 系统 NTFS 特征可以绕过上传 ;

image-20240731141641499

# burpsuite 抓包,修改后缀名为 .php::$DATA ;

image-20240731141953721

image-20240731141901613

Pass-09(点空格点绕过上传)

# 本题是需要我们用点空格点来进行绕过

image-20240731142052506

# 直接抓包后在后面输入. . 即可

image-20240731142128519

image-20240731142152228

Pass-10(双写后缀绕过上传)

# 在上传模块,有的代码会把黑名单的后缀名替换成空,例如 a.php 会把 php 替换成空,但是可以使用双写绕过例如 asaspp,pphphp,即可绕过上传;
如下图就可以发现

image-20240731142316696

# 所以我们就可以用双绕过来解答此题
只需要在输入的1.php后来个双绕过,直接拿下

image-20240731142415887

image-20240731142433446

Pass-11(目录可控%00 截断绕过上传(GET))

# 上面都是一些黑名单被绕过的,如果黑名单上传检测后,没有限定后缀名,绕过的方法很多,与黑名单相对的就是白名单,使用白名单验证会相对比较安全,因为只允许指定的文件后缀名。但是如果有可控的参数目录,也存在被绕过的风险;
 - 当 gpc 关闭的情况下,可以用%00 对目录或者文件名进行截断;
- php 版本小于 5.3.4 ;

image-20240731142659390

# 我们通过抓包来截断后面的内容
效果是1.php%00.1.jpg 变成 1.php

image-20240731142647470

image-20240731143159489

Pass-12(目录可控%00 截断绕过上传(POST))

# 此题和Pass-11是一样的 ,只不过一个是get,一个是post

image-20240731143242753

# 我们抓包后在1.php后面用%00来截断,完成此题

image-20240731143328410

image-20240731143536062

Pass-13(文件头检测绕过)

# 有的文件上传,上传时候会检测头文件,不同的文件,头文件也不尽相同。常见的文件上传图片头检测它检测图片是两个字节的长度,如果不是图片的格式,会禁止上传 ;

image-20240731150745387

# 制作图片一句话,使用 copy 1.jpg/b+123.php/a shell.jpg 将 php 文件附加在 jpg 图片上,直接上传即可;/b代表以二进制编码打开文件,/a代表以ASCII码编码打开文件

image-20240731150851073

image-20240731151127395

Pass-14(文件头检测绕过)

# 本题和Pass-15做法一样,按步骤完成即可

image-20240731153330612

image-20240731153349674

image-20240731153357209

Pass-15(文件头检测绕过)

# pass-15和前面两道题也一样,同样的步骤不再重复

image-20240731153517573

image-20240731153549515

image-20240731153508811

Pass-16(图片二次渲染检测绕过)

# 首先判断图片是否允许上传 jpg,jpg 图片在二次渲染后,与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片图片马;
# 将原图片上传,下载渲染后的图片进行对比,找相同处,覆盖字符串,填写一句话后门,或者恶意指令;

image-20240731161156425

image-20240731161212655

image-20240731161218817

Pass-17(条件竞争漏洞绕过)

# 在文件上传时,如果逻辑不对,会造成很大危害,例如文件上传时,用 move_uploaded_file 把上传的临时文件移动到指定目录,接着再用 rename 文件,设置图片格式,如果在 rename 之前move_uploaded_file 这个步骤 如果这个文件可被客户端访问,这样我们也可以获取一个 webshell;

其实重是重点在于,在多线程情况下,就有可能出现还没处理完,我们就访问了原文件,这样就会导致被绕过防护。

# 首先我们改一个木马,让它的效果明显一点
/cmd.php
<?php @fputs(fopen('123.php',w),'<?php phpinfo();?>');?>

然后和前面的步骤一样,让他生成一个图片马,上传文件,用burp抓包,设置无限发送空的payloads,线程调高一点;

image-20240731191015389

image-20240731191023063

# # python脚本访问我们上传文件
import requests
while True:
html = requests.get('http://192.168.0.216/upload/11.php')
if html.status_code == 200:
print("OK")
break

image-20240731191113882

Pass-18(条件竞争漏洞绕过二)

image-20240731191358838

# 从源码来看的话,对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包,因为move在rename之前,move操作进行了一次文件保存,然后rename进行了一次更改文件名,由于条件竞争,程序会出现来不及rename的问题,从而上传成功。

本题和上一个题差不多,不过是增加了Apache的解析识别漏洞 (后缀冗余)

# 我们需要搞一个运行请求的python的脚本
#requests_2.py
import requests
from threading import Thread
url = "http://192.168.0.216/upload/cmd.php.7z"
url_2 = "http://192.168.0.216/upload/123.php"
def request():
global html
global html_2
html = requests.get(url)
print(html.status_code)
html_2 = requests.get(url_2)
while True:
t = Thread(target=request())
t.start()
if html_2.status_code == 200:
print("123.php已生成!")
break

image-20240731191806990

# 因此我们可以利用Apache的漏洞,将webshell改为1.php.7z
//.7z在Apache的白名单中无法识别,所以利用,我们直接和上一题一样快速发包,实现条件竞争

image-20240731192217431

Pass-19(文件名可控绕过上传)

文件上传时,文件名可被客户端修改控制,会导致漏洞产生;本题也需要将php版本小于5.3.4才行

# 上传文件,文件马采用%00 截断,抓包解码,

image-20240731192914773

image-20240731193025803

image-20240731193412090

Pass-20(数组绕过上传)

# 有的文件上传,如果支持数组上传或者数组命名。如果逻辑写的有问题会造成安全隐患,导致不可预期的上传。这种上传攻击,它是属于攻击者白盒审计后发现的漏洞居多 ;

image-20240731193612865

# 我们通过抓包然后操作以下步骤
修改content-type
2.修改POST参数为数组类型,索引[0]为`upload-20.php`,索引[2]为`jpg|png|gif`。
3.只要第二个索引`不为1`,$file[count($file) - 1]就等价于$file[2-1],值为空。

image-20240731194109683

# 我们需要为upload-20.php复制一个数组,然后完成文件上传,发现图片马也成功了

image-20240731194328941

image-20240731194317619

好小子,离成功又近一步!!!

相关文章:

upload-labs漏洞靶场~文件上传漏洞

寻找测试网站的文件上传的模块&#xff0c;常见&#xff1a;头像上传&#xff0c;修改上传&#xff0c;文件编辑器中文件上传&#xff0c;图片上传、媒体上传等&#xff0c;通过抓包上传恶意的文件进行测试&#xff0c;上传后缀名 asp php aspx 等的动态语言脚本&#xff0c;查…...

PostgreSQL 高阶函数详解:全面深入的功能与实用示例

PostgreSQL 高阶函数详解 PostgreSQL 是一款功能强大的开源关系数据库管理系统&#xff0c;以其丰富的功能和高扩展性著称。在数据处理和分析方面&#xff0c;PostgreSQL 提供了一系列高阶函数&#xff0c;可以极大地简化和优化各种复杂操作。本文将详细介绍 PostgreSQL 的高阶…...

Redis——集合 SET

目录 1. 添加元素 SADD 2. 查看元素 SMEMBERS 3. 判断元素是否存在该集合 SISMEMBER 4. 删除元素 SREM 集合 SET 是一种无序集合&#xff1b;因此其与列表有以下区别&#xff1a; &#xff08;1&#xff09;列表是有序的&#xff0c;集合是无序的&#xff1b; &#xff0…...

openEuler安装docker

1.下载地址 搜索docker 寻找docker-ce 复制地址 2.配置仓库 [rootlocalhost yum.repos.d]# pwd /etc/yum.repos.d [rootlocalhost yum.repos.d]# vim docker-ce.repo [docker-ce] namedocker baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/ gpgche…...

每天一个数据分析题(四百六十五)- 缺失值

某连续型变量的数据集存在缺失值&#xff0c;可以采用哪种方法处理&#xff1f; A. 插值法填补 B. EM算法填补 C. 随机森林填补 D. 以上均不对 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Pytho…...

干货 | 变频器的详细介绍

变频器简述 变频器是电机控制领域中常见的一种设备&#xff0c;也称变频调节器&#xff0c;是一种将固定频率的交流电转换为可调频率的交流电的电力电子设备&#xff0c;用于控制交流电机的转速和输出功率。变频器通过调节输出电源的电压和频率&#xff0c;从而控制电动机的转速…...

Linux线程2

线程相关函数 线程分离--pthread_detach&#xff08;后面会详细讲&#xff09; 函数原型&#xff1a;int pthread_datach(pthread_t thread); 调用该函数之后不需要 pthread_join 子线程会自动回收自己的PCB 杀死&#xff08;取消&#xff09;线程--pthread_cancel 取…...

乱弹篇(40)人类追求长寿

不要认为只有中国的老龄化才严重&#xff0c;实际上全球都面临老龄化&#xff0c;其中日本最为严重。 这是随着人类生活和医学水平的不断提高&#xff0c;寿命才会比过去数十年有了大幅度的提升。据资料显示&#xff0c;目前全球平均预期寿命估计为73岁。与百年之前相比&#…...

技术详解:互联网医院系统源码与医保购药APP的整合开发策略

本篇文章&#xff0c;小编将从系统架构、数据安全、用户体验和技术实现等方面详细探讨互联网医院系统与医保购药APP的整合开发策略。 一、系统架构 1.模块化设计 互联网医院系统与医保购药APP的整合需要采用模块化设计。 2.微服务架构 每个功能模块作为一个独立的微服务&am…...

N4 - Pytorch实现中文文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 任务描述步骤环境设置数据准备模型设计模型训练模型效果展示 总结与心得体会 任务描述 在上周的任务中&#xff0c;我们使用torchtext下载了托管的英文的…...

centos 如何安装sox音视频处理工具

要在 CentOS 系统上安装 Sox 音频处理软件&#xff0c;你可以遵循以下步骤。请注意&#xff0c;这些说明适用于 CentOS 7&#xff0c;对于 CentOS 8 及更高版本&#xff0c;某些包管理命令可能略有不同。 第一步&#xff1a;安装所需的依赖库 首先&#xff0c;你需要安装一系列…...

Java语言程序设计——篇十一(2)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…...

Linux 应急响应靶场练习 1

靶场在知攻善防实验室公众号中可以获取 前景需要&#xff1a;小王急匆匆地找到小张&#xff0c;小王说"李哥&#xff0c;我dev服务器被黑了",快救救我&#xff01;&#xff01; 挑战内容&#xff1a; &#xff08;1&#xff09;黑客的IP地址 &#xff08;2&#xff0…...

AWS-Lambda的使用

介绍 Lambda 是一种无服务器(Serverless), 而且设计成事件驱动的计算服务器. 简单来说, 你可以将你的 code 上传, 当有事件产生(例如cronjob , 或者S3有新的文件被上传上來) , 你的code 就会在瞬间(零点几秒以內)被叫起來执行. 由于你不用管 Server如何维护, 或者自动扩展之类…...

python3.12 搭建MinerU 环境遇到的问题解决

报错&#xff1a; AttributeError: module pkgutil has no attribute ImpImporter. Did you mean: zipimporter? ERROR: Exception: Traceback (most recent call last):File "D:\ipa_workspace\MinerU\Lib\site-packages\pip\_internal\cli\base_command.py", …...

基于SpringBoot+Vue的流浪猫狗救助救援网站(带1w+文档)

基于SpringBootVue的流浪猫狗救助救援网站(带1w文档) 基于SpringBootVue的流浪猫狗救助救援网站(带1w文档) 该流浪猫狗救助救援网站在Windows平台下完成开发&#xff0c;采用java编程语言开发&#xff0c;将应用程序部署于Tomcat上&#xff0c;加之MySQL接口来实现交互式响应服…...

56_AOP

AOP使用案例 如何进行数据库和Redis中的数据同步&#xff1f;/ 你在项目的那些地方使用了aop&#xff1f;答&#xff1a;可以通过Aop操作来实现数据库和Redis中的数据同步。/ 通过Aop操作来实现数据库和Redis中的数据同步。可以定义一个切面类&#xff0c;通过对控制器下的所有…...

安装了h5py,使用报错ImportError: DLL load failed while importing _errors

使用pip 安装了h5py&#xff0c;但是运行代码报错&#xff1b; from . import _errorsImportError: DLL load failed while importing _errors: 找不到指定的程序。 原因&#xff1a; 可能和不正确安装h5py这个包有关系 解决&#xff1a; pip uninstall h5py 换成使用conda…...

BootStrap前端面试常见问题

在前端面试中&#xff0c;关于Bootstrap的问题通常围绕其基本概念、使用方式、特性以及实际应用等方面展开。以下是一些常见的问题及其详细解答&#xff1a; 1. Bootstrap是哪家公司研发的&#xff1f; 回答&#xff1a;Bootstrap是由Twitter的Mark Otto和Jacob Thornton合作…...

在linux运维中为什么第一道防线是云防火墙,而不是waf

在Linux运维和云计算环境中&#xff0c;第一道防线通常是云防火墙&#xff08;Cloud Firewall&#xff09;&#xff0c;而不是Web应用防火墙&#xff08;WAF&#xff09;&#xff0c;主要是因为云防火墙提供了更基础和广泛的网络层安全控制。以下是一些关键原因&#xff1a; 1…...

2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛

2022年中国高校计算机大赛-团队程序设计天梯赛&#xff08;GPLT&#xff09;上海理工大学校内选拔赛 2024.8.2 12:00————16:00 过题数790/1500 补题数943.33/1500 AB Problem Komorebi的数学课 次佛锅 Setsuna的K数列 Wiki下象棋 黄金律法 天气预报 叠硬币 AB Problem ag…...

多语言海外AEON抢单可连单加额外单源码,java版多语言抢单系统

多语言海外AEON抢单可连单加额外单源码&#xff0c;java版多语言抢单系统。此套是全新开发的java版多语言抢单系统。 后端java&#xff0c;用的若依框架&#xff0c;这套代码前后端是编译后的&#xff0c;测试可以正常使用&#xff0c;语言繁体&#xff0c;英文&#xff0c;日…...

文件上传——springboot大文件分片多线程上传功能,前端显示弹出上传进度框

一、项目搭建 创建 Spring Boot 项目: 创建一个新的 Spring Boot 项目&#xff0c;添加 Web 依赖。 添加依赖: 在 pom.xml 文件中添加以下依赖: <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId&…...

每日学术速递8.2

1.A Scalable Quantum Non-local Neural Network for Image Classification 标题&#xff1a; 用于图像分类的可扩展量子非局部神经网络 作者&#xff1a; Sparsh Gupta, Debanjan Konar, Vaneet Aggarwal 文章链接&#xff1a;https://arxiv.org/abs/2407.18906 摘要&#x…...

SAP-PLM创建物料主数据接口

FUNCTION zplm_d_0001_mm01. *"---------------------------------------------------------------------- *"*"本地接口&#xff1a; *" EXPORTING *" VALUE(EX_TOTAL) TYPE CHAR4 *" VALUE(EX_SUCCESSFUL) TYPE CHAR4 *" …...

超声波眼镜清洗机哪个品牌好?四款高性能超声波清洗机测评剖析

对于追求高生活质量的用户来说&#xff0c;眼镜的清洁绝对不能马虎。如果不定期清洁眼镜&#xff0c;时间久了&#xff0c;镜片的缝隙中会积累大量的灰尘和细菌&#xff0c;眼镜靠近眼部&#xff0c;对眼部健康有很大影响。在这种情况下&#xff0c;超声波清洗机显得尤为重要。…...

卸载Windows软件的正确姿势,你做对了吗?

前言 今天有小伙伴突然问我&#xff1a;她把软件都卸载了&#xff0c;但是怎么软件都还在运行&#xff1f; 这个问题估计很多小伙伴都是遇到过的&#xff0c;对于电脑小白来说&#xff0c;卸载Windows软件真的真的真的是一件很难的事情。所以&#xff0c;今天咱们就来讲讲&am…...

WEB前端14-Element UI(学生查询表案例/模糊查询/分页查询)

Vue2-Element UI 1.可重用组件的开发 可重用组件 我们一般将可重复使用的组件放在components目录之下&#xff0c;以便父组件的灵活调用 <!--可重用组件一般与css密切相关&#xff0c;使用可重用组件的目的是&#xff0c;将相似的组件放在一起&#xff0c;方便使用-->…...

使用swiftui自定义圆形进度条实现loading

实现的代码如下&#xff1a; // // LoadingView.swift // SwiftBook // // Created by Song on 2024/8/2. //import SwiftUIstruct LoadingView: View {State var process 0.5var body: some View {VStack(spacing: 20) {ZStack {Circle().stroke(.gray.opacity(0.3), lin…...

C# 设计模式之抽象工厂模式

总目录 前言 工厂方法模式是为了克服简单工厂模式的缺点而设计出来的&#xff0c;简单工厂模式的工厂类随着产品类的增加需要增加额外的代码&#xff0c;而工厂方法模式每个具体工厂类只完成单个实例的创建&#xff0c;所以它具有很好的可扩展性。但是在现实生活中&#xff0c…...

化工企业网站jsp/模板建站代理

** JS遍历对 象的总结 ** 1、使用Object.keys()遍历 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). var obj {‘0’:‘a’,‘1’:‘b’,‘2’:‘c’}; Object.keys(obj).forEach(function(key){ console.log(key,’:’,obj[key]); }); 输出结果…...

佛山网站改版/优化大师兑换码

main.js index.html与app.vue三者关系详解 Pecodo main.js与index.html是nodejs的项目启动的首加载页面资源与js资源,app.vue则是vue页面资源的首加载项 首先启动项目 v8找到index.html与main.js, 执行main.js时遇到 根据import加载app.vue文件(.vue文件可以不是叫app 可以…...

五莲网站建设公司/山东免费网络推广工具

2019独角兽企业重金招聘Python工程师标准>>> 1、在index.php添加调试的配置为true&#xff0c;否则配置修改后不能立即生效 define (APP_DEBUG, true ); 2、通用的配置文件放在 Application/Common/Conf下面 3、修改config.php,配置数据库类型&#xff0c;否则报错:…...

西安做北郊做网站/大数据分析

BZOJ3919&&DTOJ2308 Portals题目题目描述英文题目中文翻译输入格式输出格式样例样例输入样例输出数据范围与提示样例解释数据范围题解题目 题目描述 英文题目 There is a cake placed in a labyrinth and you desperately want to eat it. You have a map of the la…...

湛江网站建设外包/seo专业实战培训

摘要&#xff1a;虚拟机Apache设置很多用户都遇到过&#xff0c;具体如何进行虚拟机Apache设置&#xff1f;怎样才能让虚拟机Apache设置达到最简单&#xff0c;最优化&#xff1f;本文为您讲解。Apache虚拟机设置有两种方法&#xff1a; 基于主机名的虚拟主机(一个IP地址&#…...

wordpress多语言切换/seo是搜索引擎吗

注意&#xff1a; 下面代码中choice接收到的变量始终为 字符串 如果想要在程序中 使用int或者float需要对 input接收到的变量就行类型转换 可参考 类型转 案例 choice input(请选择&#xff1a;)if choice 1 :print(欢迎您的到来)else:print(您可是被选中的人&#xff0c;不…...