Ласкаво просимо до програми 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