2010-05-27 78 views
0

我們對使用MS SQL數據庫的簡單asp應用程序執行筆測試。對於使用動態構建查詢的身份驗證來說,似乎只是轉義單個qoutes。 當我們使用Unicode引號如%uFFO7,%u02b9等時,我們能夠成功注入SQL注入。 想要了解它是更多的一種配置問題的IIS服務器無法Unicode編碼的字符或驗證函數來逃避單引號的方式寫的問題的原因是什麼?IIS 6.0服務器和Unicode字符

+0

你需要添加一個攻擊的例子,目前還不清楚你在做什麼。 '%uXXXX'不是一個有效的URL編碼的Unicode字符,它是JavaScript'escape()'函數生成的自定義格式,絕不應該使用它。 – bobince 2010-05-27 11:57:49

回答

0

你有沒有ASP代碼的例子?據我瞭解,編碼是由IIS完成的,但這是爲了運輸而且不會被看到,所以它們的轉義函數可能有缺陷。如果他們構建動態SQL字符串而不是使用存儲過程(在任何情況下都不關心引號,但會將其作爲文字字符接受),則這一點尤其正確。

+0

在前面的問題中,一個更正的數據庫不是MS SQL,而是Oracle。 期間從帕羅採取的帖子內容開發是 __DIRTY = 1&__ SENTITY = __ ISPOPUP = 1&__ ISWIZARDSTEP = 0&__ ISRETURN = 0&__ VIEWSTATE =登錄=真AccessibleMode =假FromLogin = 1&提交按鈕=提交+查詢和用戶名=用戶%uFF07 + - 和密碼=密碼 的查詢我使用NetMon捕獲數據庫服務器 從用戶處選擇Usr_Id,Usr_Status其中User_Name ='user' - '和Usr_Password ='password' 因此字符%uFF07被解釋爲引用。 – Srikanth 2010-05-28 04:55:52

+0

好的,所以不是SQL Server,而是Oracle。用「存儲過程」代替「包」,你就在同一個地方:從你的ASP代碼構建動態SQL字符串有點危險,只是因爲你指出的漏洞。 你可以發佈處理查詢字符串輸入的代碼部分嗎? – 2010-06-07 15:42:25