十種MYSQL顯錯注入原理講解(一)

2022-05-11 05:38:19 字數 2012 閱讀 9060

開篇我要說下,在《**審計:企業級web**安全架構》這本書中講十種mysql顯錯注入,講的很清楚。

1、count,rand,floor

select

*from test where id=

1and (select

1from (select

count(*),concat(user(),floor(rand(0)*

2))x from information_schema.tables group

by x)a);

函式解釋:

count:是用來統計表中或陣列中記錄的乙個函式。

rand:呼叫可以在0和1之間產生乙個隨機數。

floor:函式只返回整數部分,小數部分捨棄。

原理詳解:

首先在select floor(rand(0)*2) 執行時候會返回固定的序列(表中內容10左右,你就能看出來了)。用的別人的截圖,莫怪。

所謂固定的序列就是返回的01101100....這串是固定的,這個要記牢,後面要用到。

然後,由於count(*)統計,採用的是逐行判斷式的統計,先建立虛擬表,判斷存在相同字段如果存在,統計值+1,不存在返回0,開始搜尋下個字段。

這個我舉個例子:

例如表中有十個蘋果,然後執行統計。

第一次key    統計值

蘋果    1

第二次key   統計值

蘋果    2

……最後由於floor(rand(0)*2)執行返回的是固定值,所以按照count(*)統計,在第4次執行後第5次執行統計會報錯(返回不存在相同欄位後,下一次返回相同欄位的統計,導致主鍵相同,所以報錯)。

同時這也說明,表中的內容需要大於3條。

2、updatexml()【最大長度限制32位】

select

*from test where id=

1and (updatexml(1,concat(0x7e,(select

user()),0x7e),1));

函式解釋:

updatexml:xml文件進行查詢和修改的函式。

updatexml (xml_document, xpath_string, new_value); 

第乙個引數:xml_document是string格式,為xml文件物件的名稱,文中為doc 

第二個引數:xpath_string (xpath格式的字串) ,如果不了解xpath語法,可以在網上查詢教程。 

第三個引數:new_value,string格式,替換查詢到的符合條件的資料

concat:返回結果為連線引數產生的字串。

原理解釋:

通過concat將查詢到的資訊拼接成字串,由於updatexml函式的第二個引數需要xpath格式字串。現在很顯然不是,所以報錯。

3、extractvalue()【最大長度限制32位】

select

*from test where id=

1and (extractvalue(1,concat(0x7e,(select

user()),0x7e)));

函式解釋:

extractvalue():從目標xml中返回包含所查詢值的字串。

extractvalue (xml_document, xpath_string); 

第乙個引數:xml_document是string格式,為xml文件物件的名稱,文中為doc 

第二個引數:xpath_string (xpath格式的字串)

concat:返回結果為連線引數產生的字串。

原理解析:

通過concat將查詢到的資訊拼接成字串,由於extractvalue函式的第二個引數需要xpath格式字串。現在很顯然不是,所以報錯。

這回就到這裡,記得關注。

mysql顯錯注入 MySQL注入之顯錯注入

庫 就是一堆表組成的資料集合 資料庫裡自帶的系統庫 information schema information schema裡columns表裡存著所有欄位名 information schema裡schemata表裡存著所有庫名 information schema裡tables表裡存著所有表名...

MySQL顯錯注入

updatexml xml target,xpath expr,new xml 該函式將xml標記xml target的給定片段的單個部分替換為新的xml片段new xml,然後返回更改後的xml。被替換的xml target部分與使用者提供的xpath表示式xpath expr匹配。說白了,就是用...

mysql錯誤回顯注入 sql注入 顯錯注入

前提知識 資料庫 就是將大量資料把儲存起來,通過計算機加工而成的可以高效訪問資料庫的資料集合 資料庫結構 庫 就是一堆表組成的資料集合 表 類似 excel,由行和列組成的二維表 字段 表中的列稱為字段 記錄 表中的行稱為記錄 單元格 行和列相交的地方稱為單元格 在資料庫裡有乙個系統庫 inform...