Sql Inject基於函式報錯的資訊獲取

2021-09-29 06:41:37 字數 3722 閱讀 3997

sql-inject漏洞手動測試-基於函式報錯的資訊獲取

sq|-inject漏洞手動測試基於函式報錯的資訊獲取

●常用的報錯函式updatexml0、extractvalue0. floor0

該三個函式可通過對應的報錯資訊去獲取需要的內容。

●基於函式報錯的資訊獲(select/insert/update/delete )

基於報錯的資訊獲取

技巧思路:

在mysql中使用一些指定的函式來製造報錯,從而從報錯資訊中獲取設定的資訊。

select/insert/update/delete都可以使用報錯來獲取資訊。

背景條件:

後台沒有遮蔽資料庫報錯資訊,在語法發生錯誤時會輸出在前端。

基於報錯的資訊獲取-三個常用的用來報錯的函式

updatexml() :函式是mysql對xml文件資料進行查詢和修改的xpath函式。

extractvalue():函式也是mysql對xml文件資料進行查詢的xpath函式。

floor(): mysql中用來取整的函式。

基於報錯的資訊獲取三個常用的用來報錯的函式-updatexml)

updatexml0函式作用:改變(查詢並替換) xml文件中符合條件的節點的值。

語法: updatexml (xml document(所要操作xml文件的名稱), xpathstring(對xml文件哪個地方內容的更新,乙個指定的位置寫法,對xml文件定位), new. value())

第乙個引數: fiedname是string格式,為表中的欄位名。

第二個引數: xpathstring (xpath格式的字串)在該位置傳入乙個表示式,將該表示式執行的結果作為報錯內容報錯出來。

第三個引數: new. value,string格式,替換查詢到的符合條件的

xpathstring定位必須是有效的,否則則會發生錯誤。

select下報錯的利用演示

獲取內容

select id,enail from nember where username=『kobe』 union select username, password from test. payload:

kobe』 union select username. password trom users#

基於報錯: uedatexml()

#報錯只能一次顯示一行

可以使用limit一次次進行獲取表名:

)獲取到表名後,在獲取列名,思路是一樣的:

獲取到列名稱後,再來獲取資料:

pikachu中sql-inject欄目中字元型注入——構造乙個報錯型sql注入——檢視返回結果確認其是否可以進行報錯符合sql字元型注入的條件——用updatexml函式進行報錯構造乙個報錯,通過報錯資訊獲取相關資料——查詢欄輸入該函式kobe』 and updatexml(1,version(),0)#——得到報錯返回(要將該函式(version())內容進行乙個處理,否則其會把一部分內容給吞掉)——改造函式內容(將concat放在該version()函式前使其內容形成字串列印出來,同時concat還可以執行表示式將前面字串與後面表示式執行結果拼接起來組成乙個完整的字串,將所需要執行最終表示式放入concat裡)——查詢欄輸入kobe』 and updatexml(1,concat(0x7e,version()),0)#(其中0x7e是波浪線十六進製制的表示式(也可用其它符號的十六進製制進行拼接,其目的是讓所輸入資訊不被報錯吞掉))——通過剛才payload獲取該資料庫版本資訊

——將version()替換成別的函式名即可獲得不同的所需資訊,如:將version()替換成database()——查詢欄輸入kobe』 and updatexml(1,concat(0x7e,database()),0)#——獲得該資料庫的名稱——查詢欄輸入kobe』 and updatexml(1,concat(0x7e,(select table_name from information_schema. tables where

table_schema=『pikachu』)),0)#(通過information_schema獲取相關的資訊)——提示返回的資料多於一行(該函式在報錯時多行不會顯示出來)——讓其結果只顯示一行,查詢欄輸入kobe』 and updatexml(1,concat(0x7e,(select table_name from information_schema. tables where

table_schema=『pikachu』 limit 0,1)),0)#——得到資料庫第乙個表的名稱,若要得到第二個表的名稱將limit 0,1換成limit 1,1得到資料庫第二個表的名稱——獲得第三個表的名稱就將limit 1,1換成limit 2,1——依次類推獲得所有表的名稱——獲取列名稱以及獲取資料資訊。

基於函式報錯的注入

sql inject漏洞手動測試 基於函式報錯的資訊獲取 1.常用的報錯函式updatexml extractvalue floor 2.基於函式報錯的資訊獲取 sellect insert update delete 基於報錯的資訊獲取 技巧思路 一 在mysql中使用一些指定的函式來製造報錯,從...

實驗12 基於函式報錯的注入

常用報錯函式 updatexml extractvalue floor 原因 後台沒有遮蔽資料庫報錯資訊,在語法發生錯誤時會輸出在前端。updatexml 是mysql對xml文件資料進行查詢和修改的xpath函式 extract value 是mysql對xml文件進行查詢的函式 floor my...

報錯注入函式

1 通過floor報錯,注入語句如下 and select 1 from select count concat version floor rand 0 2 x from information schema.tables group by x a 2 通過extractvalue報錯,注入語句如...