Найти тему

Проводим изучение SQL-инъекции в POST.

Для того, чтобы найти SQL-инъекции, нужно изучить Вашу цель, и попробовать взломать каждую страницу. Например, можно провести инъекцию в следующий пример: https://blog.com/page.php?sm=sm.

Попробуйте поставить одиночную кавычку «“» или использовать выражение «and» или «order by», чтобы сломать страницу.

Далее я хотел бы показать Вам пример, с использованием Mutillidae.

Нужно перейти на страницу авторизации:

-2

Далее создадим новый аккаунт, с помощью «Please register here»:

-3

Аккаунт создан:

-4

Сначала я авторизируюсь на данном сайте:

-5

Как видим, авторизация успешная.

Я выйду из этого аккаунта, и мы попробуем сделать инъекцию не методом «GET» в строке URL, а «POST», через поля авторизации.

В поле «Name», я введу свой логин «timcore», а в поле «Password»добавлю одиночную кавычку:

-6

Давайте попробуем сломать этот сайт. Жмем Login:

-7

И, как видите, перед нами ошибка. Судя по всему, это ошибка базы данных. Но так будет не всегда, так как может быть совершенно другой вывод ошибки на странице или страницах сайта или сайтов. Может быть вывод дополнительного текста, может исчезнуть статья в блоге и т. д. Примеров на самом деле масса.

В нашем примере указан файл, в котором возникла эта ошибка, а также дано описание того, что она возникла из-за кавычки:

-8

Обратите внимание на поле «Diagnostic Information», где система пыталась выполнить команду:

-9

В параметре «username» уже существуют кавычки, которые обрамлены в начале и в конце логина, а также есть кавычки и в параметре «password».

Три кавычки говорят нам о том, что можно осуществить SQL-инъекцию процентов на 60-70. Мы пока не знаем, можем ли мы заставить сайт запустить то, что мы хотим.

Снова переходим на страницу авторизации. Я ввожу в поле «Name» - «timcore», а в поле «Password» - «timcore», но в конце записи я добавлю кавычку «“».

Зачем я закрываю пароль? Дело в том, что система будет пытаться выполнить выражение: «Select * from accounts where username='timcore' and password='$pass'». Пароль у нас будет в качестве переменной:

-10

Вам просто нужно представить, как все работает.

Давайте вставим пароль, который я буду вводить в качестве переменной, плюс добавим выражение «and 1=1»:

-11

В этой записи есть одна проблема, а именно сайт будет жаловаться на последнюю кавычку. Предлагаю закомментировать эту кавычку, с помощью символа «#»:

-12

В итоге запись будет иметь вид:

-13

Вводим пароль в поле «Password»:

-14

И мы успешно авторизовались:

-15

Мы пока только проводим исследование, и ничего не сделали.

Давайте добавим ложное утверждение. Так как мы писали «1=1», и это являлось «true», нужно прописать, к примеру «1=2», и это будет ложное утверждение:

-16

Вводим логин и пароль:

-17

Даже несмотря на то, что был введен верный логин и пароль, система выдала ошибку аутентификации:

-18

В общем, мы можем использовать поле «Password» для выполнения SQL-кода.

Так, на этом все. Всем хорошего дня.