TyrHackMe | Light | Опис рішення

Ласкаво просимо до програми Light для роботи з базами даних!

pic

Знайдіть цю кімнату: Light

Light — це проста кімната, де ми використали SQL ін'єкцію в базі даних SQLite для отримання облікових даних адміністратора та флагу.

Виявлення SQL ін'єкції

Згідно з інструкціями кімнати, після підключення до сервісу на порту 1337, ми потрапляємо в програму для роботи з базою даних.

pic

Кімната також інструктує нас використовувати ім'я користувача smokey для початку, і після введення цього імені ми отримуємо пароль для користувача.

pic

Оскільки це програма для роботи з базою даних, якщо ми спробуємо просту SQL ін'єкцію з використанням ', ми побачимо, що це працює, оскільки отримаємо помилку: Error: unrecognized token: "''' LIMIT 30".

pic

Спробувавши ін'єкцію на основі об'єднання та закоментувавши частину ' LIMIT 30 за допомогою --, ми отримуємо цікаву помилку, що /*, -- або %0b не дозволені.

pic

Замість того, щоб намагатися закоментувати останню частину через помилки з ', оскільки SELECT 1 '' є дійсним запитом, ми можемо перетворити запит на UNION SELECT 1 '' LIMIT 30, додавши ' до нашого навантаження як ' UNION SELECT 1 '. Як бачимо, це працює, але цього разу ми отримуємо цікаву помилку про те, що певні слова не дозволяються.

pic

Здається, що ключові слова UNION та SELECT не дозволені, але ми можемо легко обійти цей фільтр, використовуючи великі літери.

pic

Як ми бачимо тепер, з навантаженням ' Union Select 1 ', ми успішно застосували ін'єкцію на основі об'єднання.

pic

Визначення системи управління базами даних (DBMS)

З ін'єкцією на основі об'єднання, яку ми маємо, при спробі визначити систему управління базами даних ми дізнаємось, що це SQLite.

pic

Вивантаження структури бази даних

Тепер, коли ми знаємо, що система управління базами даних — це SQLite, ми можемо використовувати навантаження ' Union Select group_concat(sql) FROM sqlite_master ' для виведення структури бази даних, як показано нижче:

pic

Витягування даних

Оскільки наша мета — знайти облікові дані для адміністратора, ми можемо вивантажити поля username та password з таблиці admintable за допомогою навантаження ' Union Select group_concat(username || ":" || password) FROM admintable ', і це дасть нам не лише облікові дані, але й флаг, що дозволить завершити кімнату.

pic

Слідкуйте за мною : Linkedin , Facebook , Github , Join Us On Community , THM Account

pic

https://buymeacoffee.com/mohamedali0

[

Мохамед Алі — я ділюсь корисними інструментами та статтями для підвищення обізнаності в галузі кібербезпеки

Red Teamer | CTF Гравець

www.buymeacoffee.com

](https://www.buymeacoffee.com/mohamedali0?source=post_page-----0be2e381efee--------------------------------)

Перекладено з: TyrHackMe | Light | Writeup

Leave a Reply

Your email address will not be published. Required fields are marked *