2014-02-19 92 views
0

我有一個計算機安全類,並且在我們假設要破解的本地機器上執行sql注入時遇到語法問題。SQL語法錯誤(SQL注入)

下面是sql語法的語法。

SqlCommand sqlc = new SqlCommand("SELECT Record FROM Table_Users WHERE Username='" + username + "' AND Password='" + password + "'"); 

我們正試圖在登錄(用戶名)字段中鍵入以下和「或‘1’=」 1密碼

;INSERT Table_Users (Username, Password) VALUES ('hejsan', 'glenn'); 

,但我得到一個語法錯誤,「附近有語法錯誤hejsan 」「。

你能看到語法錯誤嗎? =)

+0

你可以在你的_exact_輸入就是更加清楚一點?當它與問題保持一致時,有點不清楚。 –

+0

另外,我是否只有一個不適合提供正確的SQL注入提示?有沒有人聽說過一個教授如何做的課程? –

+0

他不問如何做sql注入(雖然代碼示例肯定容易),但這只是一個糟糕的Insert語句。 – gts

回答

0

嘗試

';INSERT Table_Users (Username, Password) VALUES ('hejsan', 'glenn'); 

- >你需要Username=後關閉'。 在這種情況下,您甚至不需要密碼字段的值。

你可以把你的--注入語句後取消select語句的其餘部分:

';INSERT Table_Users (Username, Password) VALUES ('hejsan', 'glenn');-- 
4

我先取是有 INSERT INTO Table_Users代替INSERT Table_Users但隨着海報指出INTO是可選的(在MSSQL中與標準ANSI SQL)。

在這取決於數據鍵入列第二個想法是查詢可以通過在值前追加n按What is the meaning of the prefix N in T-SQL statements?

+0

'INTO'是可選的,這不是問題 –

+0

替代解決方案的替代解決方案 – gts

+0

+1的更新答案。 –

0

或許真的與報價工作?

var password = "';INSERT Table_Users (Username, Password) VALUES (''hejsan'', ''glenn''); select '";