Ласкаво просимо до програми Light для роботи з базами даних!
Знайдіть цю кімнату: Light
Light — це проста кімната, де ми використали SQL ін'єкцію в базі даних SQLite для отримання облікових даних адміністратора та флагу.
Виявлення SQL ін'єкції
Згідно з інструкціями кімнати, після підключення до сервісу на порту 1337, ми потрапляємо в програму для роботи з базою даних.
Кімната також інструктує нас використовувати ім'я користувача smokey для початку, і після введення цього імені ми отримуємо пароль для користувача.
Оскільки це програма для роботи з базою даних, якщо ми спробуємо просту SQL ін'єкцію з використанням ', ми побачимо, що це працює, оскільки отримаємо помилку: Error: unrecognized token: "''' LIMIT 30".
Спробувавши ін'єкцію на основі об'єднання та закоментувавши частину ' LIMIT 30 за допомогою --, ми отримуємо цікаву помилку, що /*, -- або %0b не дозволені.
Замість того, щоб намагатися закоментувати останню частину через помилки з ', оскільки SELECT 1 '' є дійсним запитом, ми можемо перетворити запит на UNION SELECT 1 '' LIMIT 30, додавши ' до нашого навантаження як ' UNION SELECT 1 '. Як бачимо, це працює, але цього разу ми отримуємо цікаву помилку про те, що певні слова не дозволяються.
Здається, що ключові слова UNION та SELECT не дозволені, але ми можемо легко обійти цей фільтр, використовуючи великі літери.
Як ми бачимо тепер, з навантаженням ' Union Select 1 ', ми успішно застосували ін'єкцію на основі об'єднання.
Визначення системи управління базами даних (DBMS)
З ін'єкцією на основі об'єднання, яку ми маємо, при спробі визначити систему управління базами даних ми дізнаємось, що це SQLite.
Вивантаження структури бази даних
Тепер, коли ми знаємо, що система управління базами даних — це SQLite, ми можемо використовувати навантаження ' Union Select group_concat(sql) FROM sqlite_master ' для виведення структури бази даних, як показано нижче:
Витягування даних
Оскільки наша мета — знайти облікові дані для адміністратора, ми можемо вивантажити поля username та password з таблиці admintable за допомогою навантаження ' Union Select group_concat(username || ":" || password) FROM admintable ', і це дасть нам не лише облікові дані, але й флаг, що дозволить завершити кімнату.
Слідкуйте за мною : Linkedin , Facebook , Github , Join Us On Community , THM Account
https://buymeacoffee.com/mohamedali0
[
Мохамед Алі — я ділюсь корисними інструментами та статтями для підвищення обізнаності в галузі кібербезпеки
Red Teamer | CTF Гравець
www.buymeacoffee.com
](https://www.buymeacoffee.com/mohamedali0?source=post_page-----0be2e381efee--------------------------------)
Перекладено з: TyrHackMe | Light | Writeup