Вивчайте та практикуйте хакінг AWS: <imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**Навчання HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Вивчайте та практикуйте хакінг GCP: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**Навчання HackTricks GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
(ECB) Electronic Code Book - симетрична схема шифрування, яка **замінює кожний блок відкритого тексту** на **блок шифротексту**. Це **найпростіша** схема шифрування. Основна ідея полягає в тому, щоб **розділити** відкритий текст на **блоки з N бітів** (залежно від розміру блоку вхідних даних, алгоритму шифрування) і потім зашифрувати (розшифрувати) кожен блок відкритого тексту, використовуючи лише ключ.
Уявіть, що ви увійшли в додаток кілька разів і ви **завжди отримуєте одне й те ж печиво**. Це тому, що печиво додатка має формат **`<ім'я користувача>|<пароль>`**.\
Потім ви створюєте двох нових користувачів, обох з **однаковим довгим паролем** та **майже****однаковим****ім'ям користувача**.\
Ви виявляєте, що **блоки по 8 байт**, де **інформація про обох користувачів** однакова, **рівні**. Тоді ви уявляєте, що це може бути через використання **ECB**.
Це тому, що **ім'я користувача та пароль цих куків містять кілька разів літеру "a"** (наприклад). **Блоки**, які **відрізняються**, - це блоки, які містять **принаймні 1 відмінний символ** (можливо, роздільник "|" або якась необхідна різниця в імені користувача).
Тепер зловмиснику просто потрібно виявити, чи формат `<ім'я користувача><роздільник><пароль>` чи `<пароль><роздільник><ім'я користувача>`. Для цього він може просто **генерувати кілька імен користувачів** з **схожими та довгими іменами користувачів та паролями, поки він не знайде формат та довжину роздільника:**
Знаючи формат куки (`<ім'якористувача>|<пароль>`), для того щоб видаляти ім'я користувача `admin`, створіть нового користувача з ім'ям `aaaaaaaaadmin` та отримайте куку та розкодуйте її:
* Створити ім'я користувача таке, що: `len(<username>) + len(<delimiter) % len(block)`. З розміром блоку `8B` ви можете створити ім'я користувача під назвою: `username `, з розділювачем `|` частина `<username><delimiter>` створить 2 блоки з 8B.
* Потім створіть пароль, який заповнить точну кількість блоків, що містять ім'я користувача, яке ми хочемо уособити, та пробіли, наприклад: `admin `
Cookie цього користувача буде складатися з 3 блоків: перші 2 блоки - це блоки імені користувача + розділювач, а третій - пароль (який фальшиво представляє ім'я користувача): `username |admin `