2014-11-05 38 views
-4
$sql_checkpasswd = "SELECT user_id, username, user_password, user_active 
FROM " . USERS_TABLE . " 
WHERE username = '" . $username . "'" . " AND user_password = '" . md5($password). "'"; 

以上是我的php代碼是如何編寫的。這是一個登錄頁面。sql注入可能用於下面的php代碼嗎?

如何在不知道密碼的情況下使用sql注入技術進行登錄?

由於

我嘗試所有可能的組合 '或 '1 = 1'

' OR '1 = 1' -

管理員);#

和所有通常的。

錯誤的查詢之一:http://prntscr.com/53bmv8

PS:我曾經花了大量時間關於這個問題進行研究,並嘗試了很多不同的方法,這就是爲什麼我張貼這個問題,爲了得到一些幫幫我。我是sql注入新手。

+1

後'--' – 2014-11-05 16:47:49

+0

不要忘了空間並嘗試太 – TheUknown 2014-11-05 16:48:42

+1

你應該使用的SqlMap或其他一些汽車注入工具來檢查:) – 2014-11-05 16:49:57

回答

2

我終於想通了這一點,可能會幫助別人有同樣的問題:

在用戶名字段中輸入此:

admin' AND 1=1 or '1'='1 

以上的用戶名工作得很好,我沒有輸入密碼,並可以將其空白,因爲查詢變得

$username= admin' AND 1=1 OR '1'='1 AND $password = anything 

即使一個條件在上面的查詢滿意,我得到的接入和用戶名部分是因爲True1=1和管理是一個現有的用戶名

+1

+1進行自我解決。做得好。 – 2014-11-06 04:09:28

+1

幹得好。請記住,只要您的密碼變爲鹽漬,您就無法直接在SQL中檢查密碼。因此,切換到[password_hash()](http://www.php.net/manual/en/function.password-hash.php)哈希函數,從數據庫中讀取哈希值,然後用PHP驗證哈希值[password_verify()](http://www.php.net/manual/en/function.password-verify.php)。 – martinstoeckli 2014-11-06 13:33:33

+0

@martinstoeckli +1的信息。謝謝 – TheUknown 2014-11-06 17:18:11

0

請嘗試以下輸入:

' OR '1=1' LIMIT 1 -- 

包括--後的空間不顯示在這裏,出於某種原因。

+0

試過,努力工作 – TheUknown 2014-11-05 17:01:14

+0

@Fred -ii-我試着你說的並得到了這個:http://prntscr.com/53bmv8 如果我包括像你說的空間,它沒有工作 – TheUknown 2014-11-05 17:30:05

+0

請嘗試'或1 = 1 LIMIT 1 - ' – 2014-11-05 17:31:28

0

我複製一些例子希望HEP你

Java的原始:「SELECT * FROM users_table其中username =」 +「 '」 +用戶名+「'」 +「和密碼=「+」'「+密碼+」'「;

插入密碼:AA '或 ''='

Java結果:「SELECT * FROM users_table其中username = 'anyname' 和密碼= 'AA' 或 ''= '' ;

插入密碼:富」; DELETE FROM users_table其中username LIKE「%

Java結果:「SELECT * FROM users_table其中username =」 anyname」和密碼=‘富’; DELETE FROM users_table其中username LIKE「%」

+0

這看起來不錯。但在這種情況下,我需要知道用戶名或這不會工作,因爲它的AND條件,都需要是真實的。我試過所有的,即在用戶名和密碼中使用'OR'1 = 1',還有更多的組合,但沒有任何工作。查看我的答案以查看有效的解決方案。我很感謝你回答這個問題。謝謝 – TheUknown 2014-11-06 17:26:25