1. 程式人生 > >使用dvwa作為靶場,進行SQL注入的練習

使用dvwa作為靶場,進行SQL注入的練習

SQL注入

所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意的)SQL命令注入到後臺資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。比如先前的很多影視網站洩露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊.

當應用程式使用輸入內容來構造動態SQL語句以訪問資料庫時,會發生SQL注入攻擊。如果程式碼使用儲存過程,而這些儲存過程作為包含未篩選的使用者輸入的字串來傳遞,也會發生SQL注入。SQL注入可能導致攻擊者使用應用程式登陸在資料庫中執行命令。相關的SQL注入可以通過測試工具pangolin進行。如果應用程式使用特權過高的帳戶連線到資料庫,這種問題會變得很嚴重。在某些表單中,使用者輸入的內容直接用來構造動態SQL命令,或者作為儲存過程的輸入引數,這些表單特別容易受到SQL注入的攻擊。而許多網站程式在編寫時,沒有對使用者輸入的合法性進行判斷或者程式中本身的變數處理不當,使應用程式存在安全隱患。這樣,使用者就可以提交一段資料庫查詢的程式碼,根據程式返回的結果,獲得一些敏感的資訊或者控制整個伺服器,於是SQL注入就發生了。

SQL注入常規利用思路:

1、尋找注入點,可以通過web掃描工具實現 

2、通過注入點,嘗試獲得關於連線資料庫使用者名稱、資料庫名稱、連線資料庫使用者許可權、作業系統資訊、資料庫版本等相關資訊。 

3、猜解關鍵資料庫表及其重要欄位與內容(常見如存放管理員賬戶的表名、欄位名等資訊) 

4、可以通過獲得的使用者資訊,尋找後臺登入。 

5、利用後臺或瞭解的進一步資訊,上傳webshell或向資料庫寫入一句話木馬,以進一步提權,直到拿到伺服器許可權。

手工注入常規思路:

1.判斷是否存在注入,注入是字元型還是數字型

2.猜解SQL查詢語句中的欄位數 

3.確定顯示的欄位順序 

4.獲取當前資料庫 

5.獲取資料庫中的表 

6.獲取表中的欄位名 

7.查詢到賬戶的資料

DVWA

DVWA(Damn Vulnerable Web Application)是一款滲透測試的演練系統,如果需要入門,並且找不到合適的靶機,那推薦從DVWA入手。DVWA其實就是一個php網站,需要事先在自己的電腦上搭好Web伺服器(Apache+PHP+MySQL),之後到DVWA的官網(http://www.dvwa.co.uk/)選擇下載得到DVWA-master.zip,解壓之後放到本地php的網站目錄(如htdoc)。

Low級別SQL注入攻擊的目標程式原始碼

常見注入測試的POC

實踐進行時

1.在Windows環境下搭建Web伺服器

(1)為了搭建Apache+PHP+MySQL的Web伺服器環境,本實驗按照DVWA的推薦,使用XAMPP一站式安裝,可以到官方網站下載:https://www.apachefriends.org/index.html

(2)之後安裝程式,保持預設設定即可,可以看到下面介面。

(3)開啟程式的主控面板,手動點選開啟Apache和MySQL服務,這兩個分別是Web伺服器和資料庫伺服器,如果不熟悉,自行查詢資料瞭解一下。

(4)服務開啟以後,開啟一個瀏覽器,輸入127.0.0.1,如果看到以下介面,說明軟體和服務安裝成功。

2.安裝DVWA軟體

(1)到DVWA的官網(http://www.dvwa.co.uk/)選擇下載得到DVWA-master.zip.解壓後,大部分檔案是PHP和配置檔案,在 c:\xampp\htdocs目錄下新建一個DVWA資料夾,把剛才解壓的所有檔案放到該目錄下。注意,htdocs目錄既是網頁http://127.0.0.1訪問的根目錄,如果要訪問DVWA,使用網址 http://127.0.0.1/DVWA即可,如果自己更改目錄名和結構,自行更改訪問網址。可以先看一下README檔案。


(2)在DVWA的config目錄下找到配置檔案,按圖中提示修改。

(3)用文字編輯器(如記事本)開啟剛才改名的config.inc.php檔案,把資料庫的密碼改為空(因為XAMPP預設安裝的資料庫密碼為空)

(4)開啟http://127.0.0.1/DVWA/setup.php頁面,進行配置,如果出現紅色錯誤,則對php.ini檔案進行修改。

如果瀏覽器還報錯,就重啟一下計算機。

(5)如果http://127.0.0.1/DVWA/setup.php頁面中沒有紅色提示,說明沒有問題,可以點選頁面最下方的create/reset database的按鈕,生成DVMA必須的資料庫。

(6)配置完成後,開啟http://127.0.0.1/DVWA/login.php,出現下面頁面,使用者名稱是admin,密碼是password

(7)點選DVWA Security,選擇Low級別。

(8)點選SQL Injection就可以開始SQL注入攻擊實驗了

3.實現SQL注入攻擊

(1)

  1. 簡單ID查詢的正常功能體驗:輸入正確的User ID(例如1,2,3...),點選Submit,將顯示ID First name,Surname資訊。
  2. 輸入錯誤的不顯示

(2)遍歷資料庫表,輸入:1' or' 1' =' 1,遍歷出了資料庫中所有內容。

(3)獲取資料庫名稱、賬戶名、版本及作業系統資訊。通過使用user(),database(),version()三個內建函式得到連線資料庫的賬戶名、資料庫名稱、資料庫版本資訊。通過注入1' and 1=2 union select user(),database() -- (注意--後有空格)得到資料庫使用者為[email protected]及資料庫名dvwa


(4)猜測表名,注入:1' union select 1,group_concat(table_name) from information_schema.tables where table_schema =database()#得到表名為:guestbook,users注:union查詢結合了兩個select查詢結果,根據上面的order by語句我們知道查詢包含兩列,為了能夠現實兩列查詢結果,我們需要用union查詢結合我們構造的另外一個select.注意在使用union查詢的時候需要和主查詢的列數相同。

(5)猜列名,注入:1' union select 1,group_concat(column_name) from information_schema.columns where table_name ='users'#得到列:user_id, first_name, last_name, user, password, avatar, last_login, failed_login, id, username,password

(6)猜使用者密碼,注入:

1' union select null,concat_ws(char(32,58,32),user,password) from users #  

得到使用者資訊,例如admin資料,下面的字串是雜湊值

admin 5f4dcc3b5aa765d61d8327deb882cf99

7.使用https://crackstation.net/,對上述MD5值進行破解,還原admin使用者密碼明文,把還原的密碼進行截圖記錄。

 

4.完成DVWA中SQL注入攻擊通關過程

網上查詢DVWA的SQL注入攻擊完整通關教程,例如可以參考:

http://www.storysec.com/dvwa-sql-injection.html