2017-07-03 61 views
0

的注射過程是:SQL注入法

SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1; 

但是,我的問題是如何注入查詢的SQL工作?

+1

當添加'或1 = 1'時'WHERE'語句變得不相關,並且總是返回true,因此查詢總是被執行。 –

+3

可能重複[找到'OR 1 = 1/\ * sql注入我的通訊數據庫](https://stackoverflow.com/questions/13867266/found-or-1-1-sql-injection-in-my-通訊數據庫) – karthik006

回答

1

它時,你有你的查詢作爲字符串在你的代碼,這樣的事情

Query = "SELECT UserId, Name, Password FROM Users WHERE UserId = '" + sUserID + "'" 

所以你通過sUserID = 「ABC」 OR 1 = 1;」

這將轉換像

SELECT UserId, Name, Password FROM Users WHERE UserId = 'ABC' OR 1=1 
+1

謝謝,這將有助於我..... –

+0

@IsmayilS高興地聽到,我幫助:)請標記爲答案,如果它確實 – asmgx

1

由於條件1=1總是true,在WHERE聲明的末尾添加這使得它無關,始終true,彷彿WHERE說法根本不存在所有。因此,無論添加到WHERE語句中的任何其他條件如何,查詢總是被執行。

在這個例子中,你提供的,如果你允許用戶寫下自己的userID,他們可以在輸入字段中或在網站的URL地址寫105 or 1=1,並自or 1=1使得UserId=105沒用,查詢將始終選擇數據,因此SQL注入。