2013-11-14 2 views
0

У меня есть проект для курса, где я подключаюсь к локальному серверу 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. Также как создать свою собственную учетную запись в базе данных?

+1

возможно дубликат [Как я могу предотвратить SQL-инъекции в PHP?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+0

1) Включен ли 'magic_quotes' на вашем сервере? Этого не должно быть, и это помешает вашим попыткам. 2) Я не думаю, что любые MySQL-драйверы для PHP ('mysql_ *', 'mysqli_ *', PDO) поддерживают несколько запросов в одном утверждении, поэтому такие вещи, как 'command1; command2 ... 'не будет работать. 3) Попробуйте добавить конечное пространство после '--', так что у вас есть' - '. В качестве альтернативы попробуйте '#' как ваш разделитель комментариев. –

ответ

1

Вы можете отправить значение, чтобы сделать недействительным, где и сделать всегда верным результат. Это даст вам доступ к системе, не зная пароля.

«или 1 = 1 -

Майк после того, как я бегу ваше заявление в SQL я получил это.

enter image description here

+0

Ключевым моментом здесь является то, что вы заставляете sql думать, что вы закрыли одиночную кавычку, 1 = 1 гарантирует, что запрос всегда будет возвращать данные. он также варьируется в зависимости от того, какой он является бэкэнд SQL. [sql injection cheat sheet] (http://ckers.org/sqlinjection/) – Greg

+0

Хорошо работает, но он всегда обращается к той же учетной записи независимо от того, что я ввел в поле ID учетной записи. Как получить доступ к другим учетным записям? И как мне добавить свою собственную учетную запись в базу данных? –

+0

Пользователь - тот, который используется в форме. Попробуйте вставить «1» или «1»; вставить заявление; - – Juan

Смежные вопросы