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

crAPI靶场学习记录

靶场搭建

[靶场下载地址](我fork了一份)

docker安装,笔者是用的wsl+docker.

[lab0:**初始账户 **]

  1. 注册一个账户,邮箱为[API@qq.com],密码为Admin@123

  1. 登陆后访问对应IP的8025端口,接收邮件获取车辆信息。



[lab1:**访问其它用户车辆的详细信息 **]

登录后首先找到泄露其它用户的车辆
id的接口。进入论坛主页点击某一个论坛文章发现此时的URL为:


于是试着抓一下包,看能返回什么,可以看到已经返回了该用户的隐私信息:


进一步我们猜测一下直接抓论坛首页试试:


在这里我们就得到了demo用户的vehicleid 信息

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

  1. 要查车辆信息,现在我们只有Dashboard页面存在车辆信息,我们尝试抓包这个页面,抓了下首页发现是应该根据我们当前用户的Cookie来返回的,我们再找找有没有其他地方:



我们将其替换为demo用户的vehicleid 信息
54e7994a-e14e-4ee6-a46d-235ca3fd0eed


[lab2:**访问其它用户的机械报告 **]


在提交的Json数据中发现危险数据:


[lab3: **重置其它用户的密码 **]

退出登录,点击忘记密码,输入<API@qq.com,点击Sent OTP
,在后台查看验证码只有四位,于是准备爆破


填写表单,密码修改为Admin@456 ,提交抓包查看:


多交几次看看有没有限制爆破:


由于是API的靶场,我们试试换个API的版本试试:


开始着手爆破,选择狙击手模式即可,导入我们从0到9999的字典开始爆破:


可以看到原来的密码已经不能登录了:


[lab4: 找到泄露其它用户敏感信息的API**接口 **]

同lab1中的论坛页面信息泄露

[lab5: 找到泄露视频内部属性的API**接口 **]

感觉这个接口比较鸡肋


懒得按这个按钮才弹出的上传视频选项,于是我选择修改前端删掉hidden部分就可以:



lab6: 使用 "contact mechanic"功能完成第7[DoS]


在提交的Json数据中发现危险数据:

我们尝试修改,再重新提交:


[lab7:**删除另一个用户的视频 **]

这个API危害挺大

还是lab5处的抓包,我们修改一下协议,把PUT修改为OPTIONS

HTTP中的OPTIONS方法是一种用于获取目标资源所支持的HTTP方法列表的请求方法。它允许客户端向服务器查询对特定资源所支持的请求方法,以确定在不实际发送请求的情况下,可以对该资源执行哪些操作。

OPTIONS请求的主要用途包括:

  1. CORS(跨域资源共享):在进行跨域请求时,浏览器会首先发送一个OPTIONS请求,以确定服务器是否允许发送实际的跨域请求。服务器可以通过返回特定的响应头(如Access-Control-
    Allow-Methods**)来指示允许的请求方法。**

  2. 服务器功能查询:客户端可以使用OPTIONS请求向服务器查询特定资源支持的HTTP方法列表。这对于动态确定可以执行的操作非常有用,可以根据服务器返回的允许的方法列表来自适应地构建请求。

  3. API文档和发现:OPTIONS方法还可以用于提供API文档和服务发现功能。通过在OPTIONS响应中包含有关资源的元数据,例如支持的方法、请求头等信息,客户端可以获得有关API的更多信息,以便正确使用和调用API。

  4. GET:用于从服务器获取资源。客户端发送一个GET请求来获取指定URI的资源。GET请求是幂等的,即多次发送相同的GET请求应该返回相同的响应。

  5. POST:用于向服务器提交数据,创建新资源或触发服务器的处理操作。POST请求将数据作为请求体发送给服务器,通常用于提交表单数据、上传文件等。

  6. PUT:用于向服务器更新或替换资源。PUT请求将请求体中的数据保存到服务器上指定的URI位置。如果URI不存在,则可以创建新资源;如果URI已存在,则将其替换为请求的内容。

  7. DELETE:用于删除服务器上的资源。DELETE请求用于删除指定URI的资源。

  8. OPTIONS:用于获取目标资源所支持的HTTP方法列表。OPTIONS请求允许客户端查询服务器对特定资源支持的请求方法,以确定可以对该资源执行哪些操作。

  9. HEAD:与GET方法类似,但不返回响应体,仅返回响应头。HEAD请求用于获取关于资源的元数据,例如响应头中的信息,而无需传输整个响应体。

  10. PATCH:用于对服务器上的资源进行局部更新。PATCH请求仅对资源进行部分修改,而不是替换整个资源。

除了上述方法外,HTTP/1.1 规范还定义了其他一些请求方法,如:

TRACE:用于在请求往返的路径上执行一个追踪。它通常用于诊断和调试,以确定请求如何通过代理服务器和中间节点传输。

CONNECT:用于建立与目标主机的隧道连接,通常用于通过代理服务器建立安全的HTTPS连接。


权限不足说明需要用admin的身份:


后续通过修改videos/ 后的ID可以实现任意视频的删除

[lab8: **免费获得一件物品 **]


点击后抓包:


修改请求方式为GET:


我们可以敏锐地观察到返回的Json数据中有一个status数据,明显表示着已经订购的信息。回到购买界面,我们看到还有Return按钮,我们点击后抓包看看:



直接切换成GET请求爆出了无权使用的消息,不慌张我们试试尝试着先把这个货品退回再用之前的方式利用

order_id进行查看,发现状态确实发生了改变。


这里我们大胆猜想退回的状态就是returned进行修改试试,注意由于status是原来就有的数据,所以这里我们需要用PUT协议进行提交而不是POST协议:

PUT和POST是HTTP请求方法,用于向服务器提交数据。它们在语义和使用场景上有以下区别:

  1. 目的:POST用于向服务器提交数据,请求服务器对数据进行处理。通常用于创建新资源、提交表单数据、发送评论等。PUT用于向服务器更新或替换指定URI的资源。如果URI不存在,则可以创建新资源;如果URI已存在,则将其替换为请求的内容。

  2. 幂等性:POST请求不是幂等的,即多次发送相同的POST请求可能会产生不同的结果。每次发送
    POST请求,服务器可能会创建新的资源、执行不同的操作或返回不同的响应。PUT请求是幂等的,即多次发送相同的PUT请求应该产生相同的结果。每次发送PUT请求,服务器应该将请求的内容保存在指定的URI位置,因此多次请求会更新或替换相同的资源。

  3. 数据位置:POST请求将数据包含在请求体中发送给服务器。数据的格式可以是表单数据、
    JSON、XML等。PUT请求也将数据包含在请求体中,但是它通常用于指定URI位置的资源,并将请求的内容保存在该位置。

  4. 资源标识:POST请求通常由服务器决定资源的标识,并返回新资源的标识符(如生成的ID)。

PUT请求通常由客户端指定资源的标识,即URI中的位置。

总结来说,POST用于提交数据进行处理,通常用于创建新资源或执行操作,而PUT用于更新或替换指
定URI的资源。POST请求不是幂等的,而PUT请求是幂等的。根据具体的应用场景和资源操作需求,选择适当的请求方法来进行数据提交和资源更新。

从返回的数据可以看到已经修改成功了,也就是说我们空少套白狼了4个椅子

[lab9:将您的结余增加1000**元或以上 **]

同样地利用上面的API,因为我们发现数据不仅可以提交status还可以提交quantity。

先将quantity改为100,status改为delivered,这样我们就可以不花钱就点了100个价值10元的椅子


然后修改状态为returned,就可以退钱!!!🤑


[lab10: **更新内部视频属性 **]

同lab5的抓包,我们可以看到返回的Json数据有如下几种:

所以我们需要更改的话就使用PUT协议,在请求的Json数据中指定就好。


lab11: crAPI发送一个HTTP调用到"www.ba idu.com"
并返回 HTTP响应

同lab2接口与抓包,抓包后我们在请求信息中发现了关键信息:

为了验证这个猜想,我们使用DNSlog进行验证,使用工具:[https://dig.pm/]

DNSlog是一种用于收集和分析DNS查询的日志的技术和工具。在网络通信中,DNS(Domain
Name
System)用于将域名解析为对应的IP地址。DNSlog通过设置恶意DNS服务器或域名来截获应用程序或系统发出的DNS查询请求,并将查询信息记录到日志中。

DNSlog注入是一种利用应用程序对DNS查询结果的处理不当而导致的安全漏洞。它通常发生在应用程序通过DNS查询获取动态资源时,没有对返回的DNS响应进行充分的验证和过滤。攻击者可以通过构造恶意的DNS查询请求,将恶意内容注入到应用程序的响应中,从而实现攻击目的。


复制subdomain并加上http://后替换mechanic_api的值


lab12: 想办法在不知道优惠券代码的情况下获[得免费优惠券
]

先找到输出优惠卷代码的接口,进行抓包查看数据:


查了一下文档,考点是NoSQL Injection
,之前都学的是SQL注入基于MySQL的这里来个NoSQL给我整不会了,先学一下NoSQL的基本知识:

NoSQL注入(NoSQL
Injection)是一种攻击技术,针对使用NoSQL数据库的应用程序而言,类似于传统SQL注入攻击。NoSQL注入利用了应用程序对用户输入数据的处理不当,以执行未授权的操作或绕过访问控制。

NoSQL数据库与传统关系型数据库不同,其查询语言和数据存储机制也不同。然而,一些NoSQL数据库仍然需要处理用户提供的数据,如查询参数、过滤条件等。如果应用程序没有正确验证和过滤这些用户输入数据,就可能存在NoSQL注入漏洞。

NoSQL注入攻击的原理是攻击者通过在应用程序发送给NoSQL数据库的查询中注入恶意的数据,以干扰查询的逻辑。攻击者可以利用以下方法进行注入攻击:

  1. 注入查询语句:攻击者通过在查询中注入恶意操作符、查询语句或特殊字符,来修改查询的逻辑,获取敏感数据或执行未授权的操作。

  2. 绕过访问控制:攻击者可以通过注入特定的查询条件来绕过应用程序的访问控制机制,获取未授权的数据或执行特权操作。

  3. 盲注入:在一些情况下,应用程序可能没有直接将查询结果返回给用户,而是根据查询的结果来进行后续操作。攻击者可以通过注入特定的查询条件,观察应用程序的行为差异,从而推断出查询的结果或执行特定操作。

NoSQL(Not Only
SQL)是一类非关系型数据库,与传统的关系型数据库(如MySQL、Oracle)相对应。NoSQL数据库设计的初衷是解决关系型数据库在大规模数据存储和高并发访问方面的局限性。

NoSQL数据库采用了不同的数据模型和存储机制,以满足特定的应用需求。与传统关系型数据库使用表格结构和SQL查询语言不同,NoSQL数据库通常采用以下数据模型之一:

  1. 键值存储(Key-Value
    Stores):使用简单的键值对结构存储数据,通过唯一的键来访问数据。例如,Redis、DynamoDB。

  2. 文档存储(Document
    Stores):以类似JSON或XML的文档格式存储数据,每个文档都有唯一的标识符。例如,MongoDB、CouchDB。

  3. 列族存储(Column Family
    Stores):将数据组织为列族的形式,每个列族包含不同的列和行。例如,HBase、Cassandra。

  4. 图形数据库(Graph
    Databases):用于处理图形结构数据,其中节点和边表示实体和它们之间的关系。例如,Neo4j、JanusGraph。

NoSQL数据库具有以下特点和优势:

可扩展性:NoSQL数据库通常具有良好的横向扩展性,可以轻松处理大规模数据和高并发访问。

灵活的数据模型:NoSQL数据库提供了灵活的数据模型,适应不同类型和结构的数据,无需事先定义严格的表格结构。

高性能:由于去除了复杂的关系模型和复杂的查询语言,NoSQL数据库可以实现更高的读写性能。

弱一致性:一些NoSQL数据库采用了弱一致性模型,允许数据在不同节点之间存在一定的延迟和不一致性,以提高性能和可用性。

分布式架构:NoSQL数据库常用于分布式环境中,数据可以在多个节点上进行分布和复制,提供高可用性和容错性。

我们在这里使用了两个数据库软件分别是Postgresdb 和Mongodb
,通过我们之前的响应信息的Json格式可以判断。但是这里的Postgresdb
常简称为Postgres)是一个开源的关系型数据库管理系统(RDBMS),而不是NoSQL数据库。

经过查阅docker的日志,很神奇我并没有使用这个db,可能是我们的模块暂未使用它吧。


故我们只需要面对Mongodb进行NoSQL注入就行了原本的Json提交数据是:

这表示MongoDB将搜索集合中满足查询条件的文档,并返回结果集中包含"coupon_code"字段值为"1234"的文档。


在学习了最基本的NoSQL注入的语句和Mongodb数据的结构后我构造了payload:

1 {"coupon_code": {"$ne": "hacked by c2yb8er"}}

这个查询条件的意思是,查找"coupon_code"字段值不等于hacked by c2yb8er 的文档。

其中$ne 操作符表示不等于的意思

NoSQL学习link

lab13: 找到一种通过修改数据库来兑换已经领取的优惠券的方法

有点疑惑,实战的时候找不到这种文档怎么办?

查看文档发现一个接口/workshop/api/shop/apply_coupon

image-20230911150106024

我很懵逼,为什么我明明用的Mongodb,不应该是NoSQL注入吗?这里为什么来了一个MySQL中的字符型注入?查阅一下相应代码,真相水落石出了!

class ApplyCouponView(APIView): 
"""
Apply Coupon View to increase the available credit
"""@jwt_auth_requireddef post(self, request, user=None):"""api for checking if coupon is already claimedif claimed before: returns an error message else: increases the user credit:param request: http request for the viewmethod allowed: POSThttp request should be authorised by the jwt token of the user:param user: User object of the requesting user:returns Response object withmessage and 200 status if no error message and corresponding status if error"""coupon_request_body = request.dataserializer = CouponSerializer(data=coupon_request_body) if not serializer.is_valid():
log_error(request.path, request.data, 400, serializer.errors) return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)with connection.cursor() as cursor:cursor.execute("SELECT coupon_code from applied_coupon WHERE user_id = "\+ str(user.id)\+ " AND coupon_code = '"\+ coupon_request_body['coupon_code']\+ "'")row = cursor.fetchall()if row and row != None: return Response({'message': row[0][0] + " " + messages.COUPON_ALREADY_APPLIED,},status=status.HTTP_400_BAD_REQUEST)try:coupon = Coupon.objects.using('mongodb').get(coupon_code=coupon_request_body['coupon_cod  e'])except ObjectDoesNotExist as e:log_error(request.path, request.data, 400, e) return Response({'message': messages.COUPON_NOT_FOUND},status=status.HTTP_400_BAD_REQUEST)AppliedCoupon.objects.create( user=user,coupon_code=coupon_request_body['coupon_code'])user_details = UserDetails.objects.get(user=user) user_details.available_credit += coupon_request_body['amount'] user_details.save()return Response({'credit': user_details.available_credit, 'message': messages.COUPON_APPLIED}, status=status.HTTP_200_OK)

注入点是这段代码:

with connection.cursor() as cursor:cursor.execute("SELECT coupon_code from applied_coupon WHERE user_id = "\+ str(user.id)\+ " AND coupon_code = '"\+ coupon_request_body['coupon_code']\+ "'")

当我传入如下数据后:

 {
"coupon_code":"1'or '1'='1",
"amount":1
}

这里执行的SQL语句就会变成这样:

SELECT coupon_code from applied_coupon WHERE user_id = 'My_id' AND coupon_code = '1'or '1'='1'

破案了!我还以为我刚刚学的NoSQL注入白学了!🥺

[lab14: **查找不为用户执行身份验证检查的接口 **]

同lab3中的/workshop/api/mechanic/mechanic_report?report_id=6

同lab8中的/workshop/api/shop/orders/1

[lab15:找到伪造有效 JWT **令牌的方法 **]

[JWT Algorithm Confusion Vulnerability]

[查阅文档]:Auth0
exposes a JWKS endpoint for each tenant, which is found at

https://{yourDomain}/.well-known/jwks.json . This endpoint will
contain the JWK used to verify all Auth0-issued JWTs for this tenant.

通过访问http://localhost:8888/.well-known/jwks.json 获取JWT的公钥


到 JWT选项卡,点击New RSA Key 复制 JWK key 内容


之后再右键我们新建的Key Copy Public Key as Pem


去Decoder选项卡对这个 PEM 密钥进行 Base64 编码,然后复制生成的字符串


再次回到Burp 主选项卡栏中 的 JWT Editor Keys选项卡,点击New Symmetric
Key后Generate,将 k 属性的生成值替换为PEM Base64编码


然后在burp的请求中可以发现 json web
token选项卡,在选择卡左下角处也可以看到对 json web token 的攻击选项。

[Invalid Signature Vulnerability]

我们在访问Dashboard 的时候进行抓包,进入Repeater 中的JSON Web Token
页面中:

首先我们修改Payload中的sub为其他的账户试试:成功越权访问到其他用户的信息:

实际上就是通过修改下图红框内的内容进行的验证:


现在我们将Header中的算法改为不启用,点击Attack中的"none" Signing
Algorithm ,发送包后发现我们的验证字段值发生了较大的变化:



但是这个只是一个特殊的接口漏洞,在这个接口中可以用这种方式破解JWT
进行越权访问,其他接口就不行了:


[AddLab1: **增加一个商品 **]

对首页的Shop 进行抓包:


查看相应信息发现同时也支持POST协议,把GET改为POST试试:


提示缺少三个参数,我们补充好试试:



添加成功!

[AddLab2:**支付漏洞 **]

同lab8抓包,修改quantity为负数:


[总结]

通过本次靶场学习我对API安全有了更深的认识,之前觉得比较抽象。同时也对HTTP中的

GET\POST\PUT\DELETE\OPTIONS等协议有了更深刻的理解。

同时在分析lab有些题目的时候,我学习了NoSQL注入的方式,对Mongodb这些非关系型数据库有了基本的认识。同时,精进了我对Burp
Suite的操作。

美中不足的就是我对 JWT
相关知识不太熟悉,打完靶场后也没太懂这个东西有什么用处。这是我后面需要进行补充学习的。

总的来说,本靶场认真打下来的话,我相信你会对API安全有不一样的认识和理解!

相关文章:

crAPI靶场学习记录

靶场搭建 [靶场下载地址](我fork了一份) docker安装&#xff0c;笔者是用的wsldocker. [lab0:**初始账户 **] 注册一个账户&#xff0c;邮箱为[APIqq.com]&#xff0c;密码为Admin123 登陆后访问对应IP的8025端口&#xff0c;接收邮件获取车辆信息。 [lab1:**访问其它用户车…...

知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用28-基于py2neo的ICD-11疾病分类的知识图谱的查询与问答实战应用。使用基于py2neo的ICD-11疾病分类知识图谱,我们能够像探索一座生物医学宇宙般,穿梭在各种疾病之间。这个神奇的图谱可以帮助我们揭示各种疾病之间复杂而…...

20.Xaml GroupBox控件 ---->带标题的内容控件

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…...

基于CycleGAN的山水风格画迁移

基于CycleGAN的山水风格画迁移 1、简介 1.1 研究背景及意义 绘画是人类重要的一种艺术形式&#xff0c;其中中国的山水画源远流长&#xff0c;具有丰富的美学内涵&#xff0c;沉淀着中国人的情思。游山玩水的大陆文化意识&#xff0c;以山为德、水为性的内在修为意识&#x…...

​@Cacheable 注解​

1. 功能说明 Cacheable 注解在方法上&#xff0c;表示该方法的返回结果是可以缓存的。也就是说&#xff0c;该方法的返回结果会放在缓存中&#xff0c;以便于以后使用相同的参数调用该方法时&#xff0c;会返回缓存中的值&#xff0c;而不会实际执行该方法。 注意&#xff0c;这…...

vue3+ts项目打包后的本地访问

注意&#xff1a;打包之后不可直接点击html访问&#xff0c;需要给项目安装本地服务&#xff01; 1、安装servenpm i -g serve 2、打包项目npm run build 生成dist文件夹 3、本地访问serve dist 运行service dist之后的控制台 可复制下方的地址运行打包后的项目&#xff0c;运行…...

探索程序员需要掌握的算法?

文章目录 一&#xff1a;引言二&#xff1a;常见算法介绍三&#xff1a;重点算法总结 &#x1f389;欢迎来到数据结构学习专栏~探索程序员需要掌握的算法&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章…...

性能测试 —— Jmeter定时器

固定定时器 如果你需要让每个线程在请求之前按相同的指定时间停顿&#xff0c;那么可以使用这个定时器&#xff1b;需要注意的是&#xff0c;固定定时器的延时不会计入单个sampler的响应时间&#xff0c;但会计入事务控制器的时间 1、使用固定定时器位置在http请求中&#xf…...

mp4视频太大怎么压缩?几种常见压缩方法

mp4视频太大怎么压缩&#xff1f;科技的飞速发展使得视频成为人们生活中不可或缺的一部分。然而&#xff0c;随着视频质量的不断提高&#xff0c;视频文件的大小也与日俱增&#xff0c;给我们的存储和传输带来了巨大的挑战和困扰。特别是MP4格式的视频&#xff0c;由于其出色的…...

论文复制ChatGPT按钮被发表,撤回后再曝多个类似案例;Midjourney 生成大师级的人像

&#x1f989; AI新闻 &#x1f680; 论文复制ChatGPT按钮被发表&#xff0c;撤回后再曝多个类似案例 摘要&#xff1a;一篇物理论文复制了ChatGPT按钮内容&#xff0c;经过两个月同行评审并在杂志上发表。这一现象被知名打假人发现后&#xff0c;发表商决定撤回该论文。此外…...

Python自动化测试 史上最全的进阶教程

Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 随着时代的变革&#xff0c;也许在未来测试这个职位的需求会越来越少甚至消失&#xff0c;但是每一个组织&#xff0c;每一个客户对软件质量的要求是永远不…...

centos pip失效

在 CentOS 上安装和配置 pip3 可能需要以下步骤&#xff1a; 确保 Python 3 已正确安装&#xff1a;请确保您已经正确地安装了 Python 3。在 CentOS 上&#xff0c;Python 3 可能默认安装在 /usr/bin/python3 路径下。您可以通过运行以下命令来验证 Python 3 是否正确安装&…...

Java——》ThreadLocal

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...

如何做好利益相关方的期望管理?

利益相关方对项目而言非常重要&#xff0c;有效管理利益相关方的期望可以帮助项目团队更好地满足利益相关方的需求&#xff0c;助于建立良好的合作伙伴关系&#xff0c;提高项目的可持续性和成功率。 如果项目团队无法满足利益相关方的需求&#xff0c;可能会引发冲突、争议或其…...

【K8S系列】深入解析k8s网络插件—Canal

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 在现代容器化应用程序的世界中…...

从单页面应用角度去解决不跳转页面,也能更改浏览器url地址

正常来说不刷新页面&#xff0c;也能更改浏览器url地址的方法有很多&#xff0c;我们在网上搜的话可以看到有pushState、replaceState、popstate等方法&#xff0c;那还有没有其他方法呢&#xff1f; 答案是有的&#xff01; 最近做一个vue商城项目的时候&#xff0c;用户点击支…...

Linux:keepalived + ipvsadm

介绍 Linux&#xff1a;keepalived 双热备份&#xff08;基础备份web&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/132815057?spm1001.2014.3001.5501 环境 一台 centos7 keepalived ipvsadm &#xff08;主…...

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a&#xff08;全部&#xff09; -l&#xff08;细节&#xff09; -h&#xff08;大小&#xff09; ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…...

巨人互动|Google企业户Google“自动采纳建议”应该如何使用

在数字化时代&#xff0c;Google已经成为了人们获取信息的主要渠道之一。而在使用Google搜索时&#xff0c;你可能会发现下拉框中自动提供的搜索建议。这些搜索建议是基于用户搜索行为和相关数据进行推测&#xff0c;旨在使用户更快速地找到所需信息。而Google还提供了一项名为…...

元宇宙全球市场规模到2030年将达9805亿美元!

元宇宙是一种新兴的概念&#xff0c;它指的是一个虚拟的世界&#xff0c;由人工智能、虚拟现实、区块链等技术构建而成。元宇宙的起源可以追溯到上世纪90年代的虚拟世界“第二人生”&#xff0c;但直到近年来&#xff0c;随着技术的不断发展&#xff0c;它才逐渐成为了人们关注…...

《向量数据库指南》——向量数据库内核面临的技术挑战及应对措施

最近一年&#xff0c;以 ChatGPT、LLaMA 为代表的大语言模型的兴起&#xff0c;将向量数据库的发展推向了新的高度。 向量数据库是一种在机器学习和人工智能领域日益流行的新型数据库&#xff0c;它能够帮助支持基于神经网络而不是关键字的新型搜索引擎。向量数据库不同于传统的…...

API对接中需要注意的事项

API对接是一个复杂的过程&#xff0c;需要对接双方准确地理解和遵循一系列步骤。以下是一些在API对接中需要注意的事项&#xff0c;以及每个步骤的详细解释和可能遇到的问题。 一、API定义和规划 明确API需求&#xff1a;在开始对接前&#xff0c;必须明确API的具体需求和使用场…...

linux 6中4T磁盘识别并分区格式化

存储端划分4T的LUN后&#xff0c;主机端操作如下 1、主机识别&#xff0c;本例中hba卡的端口是host11和host12 [rootdb1 ~]# echo "- - -" > /sys/class/scsi_host/host11/scan [rootdb1 ~]# echo "- - -" > /sys/class/scsi_host/host12/scan …...

WebServer 解析HTTP 响应报文

一、基础API部分&#xff0c;介绍stat、mmap、iovec、writev、va_list 1.1 stat​ 作用&#xff1a;获取文件信息 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>// 获取文件属性&#xff0c;存储在statbuf中 int stat(const char *…...

开利网络参与“大湾区独角兽创投大赛”进行蚓链数字生态项目路演

9月10日&#xff0c;广州市开利网络科技有限公司受邀参与位于广州国际医药港的“大湾区独角兽创投大赛”&#xff0c;进行“蚓链——企业数字化生态”项目的初赛路演。“大湾区独角兽创投大赛”是由中国企业新闻观察网指导&#xff0c;由中国商协会服务工作委员会、广东蚁米孵化…...

前端的8种跨域解决方案

在前端开发中&#xff0c;常见的跨域解决方案有以下8种&#xff1a; JSONP&#xff08;JSON with Padding&#xff09;&#xff1a;利用<script>标签的跨域特性&#xff0c;通过动态创建<script>标签&#xff0c;请求一个带有回调函数的接口&#xff0c;服务器返回…...

Linux知识点 -- 网络编程套接字

Linux知识点 – 网络编程套接字 文章目录 Linux知识点 -- 网络编程套接字一、预备知识1.认识端口号2.套接字3.TCP协议与UDP协议4.网络字节序 二、socket编程接口1.socket常见API2.sockaddr结构 三、UDP套接字编程1.直接打印客户端信息2.执行客户端发来的指令3.多用户聊天4.在wi…...

逆向大漠插件/用VB6.0实现后台鼠标移动和后台鼠标左键点击

自动化设计软件&#xff0c;在一款做门的设计软件CypCut6.3 上实现了自动化勾选了 复选框。一切都是基于后台的。 Private Const GW_CHILD 5 Private Const GW_HWNDFIRST 0 Private Const GW_HWNDNEXT 2 Public Declare Function FindWindow Lib "user32" Alias &…...

重庆OV证书和EV证书有什么区别

SSL数字证书按照保护的域名数量和类型可以分为单域名SSL证书、多域名SSL证书和通配符SSL证书三种&#xff0c;按照验证方式可以将SSL数字证书分为DV基础型SSL证书、OV企业型SSL证书和EV增强型SSL证书三种。今天就随SSL盾小编了解OV证书和EV证书的区别。 1.OV企业型SSL证书由CA…...

uni-app(微信小程序)图片旋转放缩,文字绘制、海报绘制

总结一下&#xff1a; 要进行海报绘制离不开canvas&#xff0c;我们是先进行图片&#xff0c;文字的拖拽、旋转等操作 最后再对canvas进行绘制&#xff0c;完成海报绘制。 背景区域设置为 position: relative&#xff0c;方便图片在当前区域中拖动等处理。添加图片&#xff0…...

越南网站怎么做/制作网站的网址

前言 PowerShell是为系统管理员设计的基于任务的自动化命令行外壳(Shell)和相关脚本环境。 它建立在.NET框架上。 它是比命令提示符(cmd)强大的命令行解释器&#xff0c;可以解释PowerShell和批处理命令。 powershell一直都是内网渗透的大热门&#xff0c;微软是真正的在推行…...

动态网站开发报告/交换友情链接的要求有

在实际的企业开发中&#xff0c;消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。不同的中间件其实现方式&#xff0c;内部结构是不…...

网站建设全过程及如何赚钱/搜索引擎seo如何赚钱

引用国外友人搭建RUBiS的一句心得&#xff0c;RUBiS is a PAIN!! 很多搞阔研的人在做实验的时候都会用到RUBiS&#xff0c;但是RUBiS的搭建确实很让人头大。一来&#xff0c;使用到RUBiS的人少之又少。二来&#xff0c;RUBiS项目已经停止维护了&#xff0c;最经的一次更新也是在…...

用php做网站/网站权重划分

点击蓝色字免费订阅&#xff0c;每天收到这样的好资讯本文将完全卷积神经网络应用于Phenoliner表型平台&#xff0c;并检测捕获的图像中的单个葡萄浆果&#xff0c;植物表型资讯介绍如下&#xff1a;在葡萄育种栽培领域&#xff0c;产量估算和预测具有重要意义&#xff0c;每株…...

大兴做网站公司/危机公关处理五大原则

出租司机给我上的MBA课 from http://blog.csdn.net/psyl/archive/2006/03/17/627496.aspx我要从徐家汇赶去机场&#xff0c;于是匆匆结束了一个会议&#xff0c;在美罗大厦前搜索出租车。一辆大众发现了我&#xff0c;非常专业的、径直的停在我的面前。这一停&#xff0c;于是有…...

seo网站营销推广全程实例pdf/市场营销案例100例

总体来说vue引入第三方字体库不算什么难度&#xff0c;如果出错&#xff0c;很多情况下是我们没有注意到一些情况&#xff0c;比如类名冲突等等&#xff0c;导致达不到所需的效果。我们这里以阿里的IconFont图标库来一步步引入。1、添加所需的图标入库1.png2、图标库里的图标库…...