網絡安全(Java語言)腳本 匯總(二)

文章目錄

  • 目錄遍歷漏洞掃描器
    • 源代碼
    • 思路
      • 一、核心功能
      • 二、依賴庫
      • 三、核心流程
      • 四、關鍵方法
      • 五、數據結構
      • 六、輸出信息

目錄遍歷漏洞掃描器

源代碼

/*** @description : 目錄遍歷漏洞掃描器*  注意; 在輸入URL時 要求必須保存 ?page=  的末尾  才能保證路徑合成的有效性*//*** @description : 目錄遍歷漏洞掃描器*  注意; 在輸入URL時 要求必須保存 ?page=  的末尾  才能保證路徑合成的有效性*/import java.io.*;
import java.net.*;
import java.util.*;
//導入IO,網絡,集合相關的標準庫
public class DirectoryTraversalScanner {public static void main(String[] args) throws Exception {List<String> targets = new ArrayList<>();//存放要掃描的目標基礎URL    創建了一個名為targets的空列表,用于存儲字符串類型的數據//使用ArrayList可以根據實際輸入的URL數量動態增長,允許用戶連續輸入多個URL地址,直到輸入空行結束BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//System.in 鍵盤輸入     InputStreamReader : 把鍵盤的輸入轉換為字符   BufferedReader 給這些字符加一個緩沖區,可以一行一行的讀取System.out.println("請輸入要掃描的URL(輸入空行結束):");while (true) {String line = reader.readLine();if (line == null || line.trim().isEmpty()) {break;  // 輸入空行則結束輸入}targets.add(line.trim());}//通過while(true)創建一個循環,每次讀取一行,如果讀到null,或者空行則跳出循環,否則將首尾去空的添加到targets集合中if (targets.isEmpty()) {System.out.println("沒有輸入任何URL,程序退出。");return;}List<String> payloads = readLinesFromFile("payloads.txt");//readLinesFromFile()方法功能是從指定文件中讀取所有行內容并返回一個字符串列表Map<String, List<String>> signatures = loadSignatures("signatures.txt");//從該文件中加載漏洞特征簽名,該方法返回一個Map結構,其中鍵是簽名類型,值是該類型下包含的特征字符串列表,這些簽名用于后續檢測HTTP響應中是否包含特定的漏洞特征for (String base : targets) {System.out.println("🔍 掃描目標: " + base);for (String payload : payloads) {String fullUrl = base + URLEncoder.encode(payload, "UTF-8");// 將目標URL與payload進行拼接,并且將payload進行編碼try {String response = sendRequest(fullUrl);boolean found = false;for (Map.Entry<String, List<String>> entry : signatures.entrySet()) {for (String keyword : entry.getValue()) {if (response.contains(keyword)) {System.out.println("🚨 漏洞發現!URL: " + fullUrl);System.out.println("👉 關鍵字: " + keyword);found = true;break;//這個break語句跳出的是內層循環,當找到一個匹配的關鍵字時,就不再檢查當前簽名類型下的其他關鍵字了}}if (found) break;//這個break跳出的是外層循環,當找到匹配結果時,就不再匹配新的簽名類型了}if (!found) {System.out.println("? 安全: " + fullUrl);}} catch (Exception e) {System.out.println("? 請求失敗: " + fullUrl + " → " + e.getMessage());}System.out.println("-----------------------------");}}System.out.println("? 掃描完成。");}public static List<String> readLinesFromFile(String filename) throws IOException {List<String> lines = new ArrayList<>();BufferedReader br = new BufferedReader(new FileReader(filename));String line;while ((line = br.readLine()) != null) {if (!line.trim().isEmpty()) {lines.add(line.trim());}}br.close();return lines;}/*** 從指定文件加載簽名信息到Map中* @param filename 包含簽名信息的文件名* @return 包含簽名信息的Map,鍵為簽名類型,值為該類型下的特征字符串列表* @throws IOException 當文件讀取出現問題時拋出*/public static Map<String, List<String>> loadSignatures(String filename) throws IOException {// 創建一個空的HashMap用于存儲簽名信息,鍵為字符串,值為字符串列表Map<String, List<String>> sigMap = new HashMap<>();// 創建文件讀取器和緩沖讀取器,用于逐行讀取文件內容BufferedReader br = new BufferedReader(new FileReader(filename));String line;// 逐行讀取文件內容,直到文件末尾while ((line = br.readLine()) != null) {// 如果當前行包含冒號,則認為是有效的簽名行if (line.contains(":")) {// 按冒號分割行內容為兩部分:冒號前為鍵,冒號后為值String[] parts = line.split(":");// 冒號前的部分作為Map的鍵String key = parts[0];// 冒號后的內容再按逗號分割成多個值,形成字符串列表List<String> values = Arrays.asList(parts[1].split(","));// 將鍵值對存入Map中sigMap.put(key, values);}}// 關閉文件讀取器,釋放資源br.close();// 返回包含所有簽名信息的Mapreturn sigMap;}public static String sendRequest(String targetUrl) throws Exception {URL url = new URL(targetUrl);// 創建URL類型的對象HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 向URL建立連接conn.setConnectTimeout(3000);conn.setReadTimeout(3000);conn.setRequestMethod("GET");// 設置請求頭int status = conn.getResponseCode();if (status != 200) throw new IOException("狀態碼: " + status);BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));// 獲取響應體,通過InputStreamReader以字符形式讀取,然后通過BufferedReader來提供高效的讀取方式StringBuilder response = new StringBuilder();// StringBuilder是一個可變的字符序列,允許高效地拼接和修改字符串內容String inputLine;while ((inputLine = in.readLine()) != null)response.append(inputLine).append("\n");in.close();return response.toString();}
}

思路

一、核心功能

  • 實現目錄遍歷漏洞掃描
  • 支持多URL目標輸入
  • 基于payload和特征簽名檢測漏洞

二、依賴庫

  • java.io.*:文件IO操作
  • java.net.*:網絡請求處理
  • java.util.*:集合框架(列表、映射等)

三、核心流程

  1. 目標輸入

    • 通過BufferedReader讀取鍵盤輸入
    • 存儲URL到targets列表(空行結束輸入)
    • 輸入為空時程序退出
  2. 資源加載

    • 從payloads.txt讀取攻擊載荷(readLinesFromFile方法)
    • 從signatures.txt加載漏洞特征(loadSignatures方法)
  3. 掃描邏輯

    • 遍歷所有目標URL
    • 拼接URL與編碼后的payload
    • 發送HTTP請求(sendRequest方法)
    • 檢測響應中是否包含漏洞特征
    • 輸出掃描結果(漏洞/安全/請求失敗)

四、關鍵方法

  1. readLinesFromFile(String filename)

    • 功能:讀取文件內容到字符串列表
    • 邏輯:按行讀取,過濾空行,返回非空行列表
  2. loadSignatures(String filename)

    • 功能:加載漏洞特征到Map
    • 格式:文件行需包含冒號(鍵:值1,值2…)
    • 結構:Map<簽名類型, 特征字符串列表>
  3. sendRequest(String targetUrl)

    • 功能:發送HTTP GET請求并返回響應內容
    • 設置:3秒連接超時+3秒讀取超時
    • 處理:僅接收200狀態碼的響應,拼接響應內容為字符串

五、數據結構

  • List targets:存儲目標URL
  • List payloads:存儲攻擊載荷
  • Map<String, List> signatures:存儲漏洞特征(鍵-特征類型,值-關鍵詞列表)

六、輸出信息

  • 掃描目標提示(🔍 掃描目標: [URL])
  • 漏洞發現提示(🚨 漏洞發現!URL: [完整URL] + 關鍵字)
  • 安全提示(? 安全: [完整URL])
  • 請求失敗提示(? 請求失敗: [完整URL] + 錯誤信息)
  • 掃描完成提示(? 掃描完成。)

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

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

相關文章

基于 ArcFace/ArcMargin 損失函數的深度特征學習高性能人臉識別解決方案

要實現當前最先進的人臉識別系統,我們需要采用業界公認性能最佳的算法框架,主要包括基于 ArcFace/ArcMargin 損失函數的深度特征學習、MTCNN 人臉檢測與對齊以及高效特征檢索三大核心技術。以下是優化后的解決方案: 核心優化點說明 算法選擇:采用 ArcFace(Additive Angul…

Sql server 查詢每個表大小

在SQL Server中&#xff0c;你可以通過查詢系統視圖和系統表來獲取數據庫中每個表的大小。這可以通過幾種不同的方式來實現&#xff0c;下面是一些常用的方法&#xff1a;方法1&#xff1a;使用sp_spaceused存儲過程sp_spaceused是一個內置的存儲過程&#xff0c;可以用來顯示數…

react 錯誤邊界

注意點&#xff1a; 類組件是可以和函數式組件混合寫的&#xff01;&#xff01;&#xff01;getDerivedStateFromError是靜態的&#xff0c;避免副作用&#xff0c;如果想將錯誤上報到服務器&#xff0c;則去componentDidCatch里去處理。getDerivedStateFromError直接返回{ ha…

自定義 VSCode 標題欄以區分不同版本

自定義 VSCode 標題欄以區分不同版本 當您在同一臺計算機上使用多個 Visual Studio Code 版本時&#xff0c;自定義窗口標題欄是一個有效的方法&#xff0c;可以幫助您快速區分它們。 為何需要區分多個 VSCode 版本&#xff1f; 在同一臺電腦上安裝和使用多個 VSCode 實例是很常…

失敗存儲:查看未成功的內容

作者&#xff1a;來自 Elastic James Baiera 及 Graham Hudgins 了解失敗存儲&#xff0c;這是 Elastic Stack 的一項新功能&#xff0c;用于捕獲和索引之前丟失的事件。 想獲得 Elastic 認證嗎&#xff1f;看看下一期 Elasticsearch Engineer 培訓什么時候開始&#xff01; E…

基于Spring Boot+Vue的萊元元電商數據分析系統 銷售數據分析 天貓電商訂單系統

&#x1f525;作者&#xff1a;it畢設實戰小研&#x1f525; &#x1f496;簡介&#xff1a;java、微信小程序、安卓&#xff1b;定制開發&#xff0c;遠程調試 代碼講解&#xff0c;文檔指導&#xff0c;ppt制作&#x1f496; 精彩專欄推薦訂閱&#xff1a;在下方專欄&#x1…

Node.js/Python 實戰:封裝淘寶商品詳情 API 客戶端庫(SDK)

在開發電商相關應用時&#xff0c;我們經常需要與淘寶 API 交互獲取商品數據。直接在業務代碼中處理 API 調用邏輯會導致代碼冗余且難以維護。本文將實戰演示如何使用 Node.js 和 Python 封裝一個高質量的淘寶商品詳情 API 客戶端庫&#xff08;SDK&#xff09;&#xff0c;使開…

【Docker】關于hub.docker.com,無法打開,國內使用dockers.xuanyuan.me搜索容器鏡像、查看容器鏡像的使用文檔

&#x1f527; 一、國內鏡像搜索替代方案 國內鏡像源網站 毫秒鏡像&#xff1a;支持鏡像搜索&#xff08;如 https://dockers.xuanyuan.me&#xff09;&#xff0c;提供中文文檔服務&#xff08;https://dockerdocs.xuanyuan.me&#xff09;&#xff0c;可直接搜索鏡像名稱并…

2025盛夏AI熱浪:八大技術浪潮重構數字未來

——從大模型革命到物理智能&#xff0c;AI如何重塑產業與人機關系&#x1f31f; 引言&#xff1a;AI從“技術爆炸”邁向“應用深水區」代碼示例&#xff1a;AI商業化閉環驗證模型# 驗證AI商業化閉環的飛輪效應 def validate_ai_flywheel(compute_invest, app_adoption): re…

從希格斯玻色子到 QPU:C++ 的跨維度征服

一、引言&#xff1a;粒子物理與量子計算的交匯點在當代物理學和計算機科學的前沿領域&#xff0c;希格斯玻色子研究與量子計算技術的交匯正形成一個激動人心的跨學科研究方向。希格斯玻色子作為標準模型中最后被發現的基本粒子&#xff0c;其性質和行為對我們理解物質質量的起…

Elasticsearch:如何使用 Qwen3 來做向量搜索

在這篇文章中&#xff0c;我們將使用 Qwen3 來針對數據進行向量搜索。我們將對數據使用 qwen3 嵌入模型來進行向量化&#xff0c;并使用 Qwen3 來對它進行推理。在閱讀這篇文章之前&#xff0c;請閱讀之前的文章 “如何使用 Ollama 在本地設置并運行 Qwen3”。 安裝 Elasticsea…

Mybatis實現頁面增刪改查

一、改變路由警告 二、實現新增數據 1.UserMapper.xml 2.Controller層 注意:前端傳的是json對象,所以后臺也需要使用JSON 3.設置提交的表單 <el-dialog title"信息" v-model"data.formVisible" width"30%" destroy-on-close><el-form…

Rabbitmq+STS+discovery_k8s +localpv部署排坑詳解

#作者&#xff1a;朱雷 文章目錄一、部署排坑1.1. configmap配置文件1.2. pv文件1.3. sc文件1.4. serviceAccount文件1.5. headless-service文件1.6. sts文件二、RabbitMQ集群部署關鍵問題總結一、部署排坑 1.1. configmap配置文件 編輯cm.yaml 文件 apiVersion: v1 kind: C…

8.14 模擬

lc658. deque 定長滑窗class Solution { public:vector<int> findClosestElements(vector<int>& arr, int k, int x) {int n arr.size();int l 0, r 0;deque<int> dq;while (r < n) {dq.push_back(arr[r]);if (dq.size() > k) {// 核心&#xf…

JavaScript 核心語法與實戰筆記:從基礎到面試高頻題

一、面試高頻:apply 與 call 調用模式的區別 apply 和 call 的核心作用一致——改變函數內 this 的指向并立即執行函數,唯一區別是參數傳遞方式不同: apply:第二個參數需以數組形式傳入,格式為 函數名.apply(this指向, [參數1, 參數2, ...]) 示例:test.apply(param, [1,…

自動駕駛系統“測試”的“要求”與“規范體系”

讓數據真正閉環的&#xff0c;L4級自動駕駛仿真工具鏈-杭州千岑智能科技有限公司&#xff1a;RSim。 自動駕駛系統測試的要求與規范體系 自動駕駛技術作為汽車產業智能化轉型的核心領域&#xff0c;其測試驗證環節直接關系到技術的安全性和可靠性。隨著自動駕駛等級的提高&…

人工智能——CNN基礎:卷積和池化

一、CNN入門介紹1、卷積神經網絡&#xff08;Convolutional Neural Network&#xff0c;簡稱 CNN&#xff09;是一種專門為處理具有網格結構數據&#xff08;如圖像、音頻&#xff09;而設計的深度學習模型。在傳統的全連接神經網絡&#xff08;FNN&#xff09;中&#xff0c;輸…

適用監測農作物長勢和病蟲害的高光譜/多光譜相機有哪些?

面對農作物長勢分析和病蟲害監測&#xff0c;光譜技術在農業中得到了有效的應用。本篇文章給大家介紹下適合監測農作物長勢和病蟲害的高光譜/多光譜相機。農作物在遭受病蟲害侵襲時&#xff0c;其葉片的細胞結構、水分含量、色素組成會發生變化&#xff0c;從而導致農作物對不同…

深度學習——03 神經網絡(4)-正則化方法價格分類案例

4 正則化 4.1 概述模型擬合的3種狀態左邊&#xff08;Underfitting 欠擬合&#xff09;&#xff1a;模型太簡單&#xff0c;沒抓住數據規律。比如用直線硬套彎曲的數據&#xff0c;預測效果差&#xff0c;訓練誤差和測試誤差都大&#xff1b;中間&#xff08;Just right 擬合合…

java16學習筆記

Java16是一個重要的特性發布&#xff0c;它為JAVA帶來了許多JVM特定的更改和語言特定的更改。它遵循了自JavaJava10以來引入的Java發布步調&#xff0c;并于2021年3月發布&#xff0c;僅在Java15發布后的六個月內發布。 Java 16是一個非LTS版本。 338:Vector API (Incubator)…