1. 程式人生 > >如何使用基於整數的手動SQL注入技術

如何使用基於整數的手動SQL注入技術

1.png

今天,我將教大家如何使用基於整型的手動SQL注入技術來對MySQL資料庫進行滲透測試。提醒一下,這是一篇寫給newbee的文章。話不多說,我們直奔主題!

SQL注入線上實驗室

1. 初學者可以使用這個網站來練習自己的SQL注入技術。

2. 訪問線上實驗室,請點選【傳送門】。

第一步:對查詢語句動手

首先,訪問網站地址:

testphp.vulnweb.com/artists.php?artist=1

接下來,我們在URL地址結尾新增一個單引號並檢視網站是否存在SQL注入漏洞:

testphp.vulnweb.com/artists.php?artist=1′

2.png

此時,我們通過修改查詢語句成功接收到了資料庫返回的錯誤訊息。但是,我們卻沒有收到關於輸入資料(我們所新增的那個單引號)的錯誤提示,這也就說明我們的輸入已經成功了。現在我們就可以知道,我們所輸入的這個字串(單引號)是不會讓資料庫返回相關錯誤資訊的,接下來我們嘗試修復一下這個問題,去掉單引號:

3.png

上圖說明,我們在查詢語句中採用了基於整型的方法之後就不會在觸發錯誤了,這也就是我們所說的基於整型的SQL注入方法。xise

第二步:查詢資料庫條目

確認了漏洞存在之後,我們就可以嘗試弄清楚這個資料庫表中到底有多少列了,這裡我們可以使用order by命令實現。我們可以不斷嘗試輸入任意值的數字來測試資料庫中有多少列。

4.png

上圖中,我輸入了數字4,我想要查詢4列,但是得到了一條錯誤提示。所以我得嘗試其他數字,試試3呢?

5.png

大家可以看到,這裡沒有返回SQL錯誤。是的,就是3列!

第三步:查詢後臺資料庫表和表名

接下來,我們需要獲取表路徑,這裡使用union all select:

6.png

上圖表明,union all select語句返回了表.2和3的表路徑:

7.png

上圖顯示了database() & version()命令的執行結果,並拿到了資料庫名和版本資訊。BT天堂

大家可以看到,資料庫名為acuart,版本資訊為5.1.73-0ubuntu0.10.04.1。

第四步:匯出資料庫表

Group_concat()函式可以從一個group中獲取與非空值級聯的字串,這裡我們可以使用這個函式來枚舉出資料庫中所有的表。全集網除此之外,我們還可以使用Information_Schema來檢視關於資料庫中物件的元資料:

8.png

9.png

上圖顯示的是目標資料庫中匯出的所有表資訊,即:carts,categ,featured,guestbook,pictures,products,users。

第五步:匯出資料庫表中所有列的資料

接下來,我們匯出目標資料庫中user表的所有資料:

10.png11.png

從上圖的結果中可以看到,這個資料庫表中包含的列條目有:uname,pass,cc,address,email,name,phone,cart。

第六步:匯出所有的使用者名稱和密碼

接下來,我們就可以匯出目標資料庫中所有的使用者名稱及密碼了:

12.png13.png

這樣一來,我們就成功拿到了使用者名稱為test且密碼為test的使用者資訊了。

後話

希望大家可以不斷練習,並嘗試匯出資料庫表中包含以下列名的資料:address, email, name, phone, cart。

最後,祝大家Happy Hacking!

*參考來源:gbhackers,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf