在上一個章節中,我們檢測到了一個SQLi。 在本文中,我們將利用該漏洞並使用它從數據庫中提取信息。

我們已經知DVWA容易受到SQLi的攻擊,所以讓我們登錄並瀏覽http://192.168.56.11/dvwa/vulnerabilities/sqli/然後按照以下步驟操作:

1.在檢測到SQLi存在後,下一步是想辦法內部查詢,或者更確切地說,知道其結果的列數。在“用戶ID”框中輸入任意數字,然後單擊“提交”。

2.現在,打開HackBar(點擊F9)然後點擊加載URL。 地址欄中的URL現在應該出現在HackBar中。

3.在HackBar中,我們將id參數的值替換爲1'order by 1 - '並單擊Execute,屏幕截圖所示:

4.我們繼續增加order by後面的值並執行請求,直到頁面發生了報錯。在此示例中,報錯信息發生在它在按列數3時。這意味着查詢的結果只有兩列,因爲我們嘗試按不存在的列對其進行排序時會觸發錯誤:

5.現在我們知道數據有兩列。然後我們嘗試使用union語句提取一些信息。將id的值設置爲1'union select 1,2--'並執行。 你應該會得到結果:

6.這意味着我們要使用union查詢中請求兩個值。 讓我們來看看DBMS和數據庫用戶的版本。 將id設置爲

1'union select @@ version,current_user()-- '

然後執行:

7.隨後我們尋找與之更相關的東西,例如應用程序的用戶。首先我們需要找到用戶的表。將id設置爲

1'union select table_schema,table_name FROM information_schema.tablesWHERE table_name LIKE '%user%'--'

提交之後看到如下頁面:

8.好的,我們知道數據庫(或模式)名稱爲dvwa,我們正在尋找的表是user。由於我們只有兩個位置來設置值,我們需要知道表中的哪些列對我們有用; 將id設置爲

1'union select column_name,1 FROM information_schema.tables WHEREtable_name ='users'--'

9.最後,我們知道了user表的內容。將id設置爲

1'union select user,password FROM dvwa.users -- '

在First name字段中,我們找到程序所存放的用戶名,在Surname字段中,我們找到了每個用戶的密碼哈希值。 我們可以將這些哈希值複製到文本文件中,然後嘗試使用John the Ripper或我們最喜歡的密碼破解程序來破解它們。

從我們的第一次注入,1' order by 1 - '到1'order by 3 - '的順序,我們使用SQL中的一個功能,允許我們使用其中的數字來排序某個字段或列的查詢結果。它在查詢中聲明的順序。我們使用它來生成錯誤,以便我們可以找出數據庫有多少列,以便我們可以使用它們來創建union查詢。

union語句用於連接具有相同列數的兩個查詢。通過注入,我們幾乎可以向數據庫查詢任何內容。在這個章節中,我們首先檢查它是否按預期工作。之後我們在用戶表中設置我們的目標並執行以下操作來獲取它:

1.第一步是發現數據庫和表的名稱。我們通過查詢information_schema數據庫來做到這一點,該數據庫存儲了MySQL中數據庫,表和列的所有信息。

2.一旦我們知道數據庫和表的名稱,我們就會查詢表中的列,以找出我們要查找的列,比如用戶名和密碼。

3.最後,我們在dvwa數據庫的users表中注入了一個查詢所有用戶名和密碼的SQL語句。

讚賞老哥一瓶大可樂+大雞腿吧!

--------------------------------------------------------------------

更多精彩內容,關注玄魂工作室

查看原文 >>
相關文章