У меня есть проект для курса, где я подключаюсь к локальному серверу localhost:8080/website.php
и выполнять SQL Injection. На сервере есть поле идентификатора учетной записи и пароля. При отправке значения идентификатора и пароля вводятся в оператор SQL: SELECT * FROM accounts WHERE id = (ID value) AND password = '(password value)'
Как я буду использовать это и выполнить SQL Injection?SQL Injection на локальном сервере
Я пробовал несколько вещей, перечисленных ниже.
' or 1=1 --
Стал SELECT * FROM accounts WHERE id = 12345 AND password = '' or 1=1 --'
открыл учетную запись, ее всегда та же учетная запись. Как получить доступ к другой учетной записи?
'; INSERT INTO accounts(id,password) values('12345','abc');--
стал SELECT * FROM accounts WHERE id = 12345 AND password = ''; INSERT INTO accounts(id,password) values('12345','abc');--'
Это дает SQL ошибку
Как войти в любой учетной записи, не зная идентификатор, то ' or 1=1 --
журналы в тот же счет, независимо от того, что я ставлю для ID. Также как создать свою собственную учетную запись в базе данных?
возможно дубликат [Как я могу предотвратить SQL-инъекции в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –
1) Включен ли 'magic_quotes' на вашем сервере? Этого не должно быть, и это помешает вашим попыткам. 2) Я не думаю, что любые MySQL-драйверы для PHP ('mysql_ *', 'mysqli_ *', PDO) поддерживают несколько запросов в одном утверждении, поэтому такие вещи, как 'command1; command2 ... 'не будет работать. 3) Попробуйте добавить конечное пространство после '--', так что у вас есть' - '. В качестве альтернативы попробуйте '#' как ваш разделитель комментариев. –