Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

13

Від автора: ви куди полізли через огорожу, громадянин! На паркані написали пароль, щоб не забути. Так може ви з цього боку написали? Та ні – це не мій написаний. Ну, вдалих пошуків, а всім іншим я розповім, як дізнатися пароль MySQL, не перелазячи через чужі паркани.

Немає нічого простіше!

Якщо у вас є елементарні знання і навички поводження з СУБД MySQL, і (головне) обліковий запис адміністратора, то дізнатися паролі всіх користувачів можна в два рахунки. Для цього можна використовувати як програмні оболонки, так і команди SQL.

Що являє собою сервер СУБД? Це звичайна база даних, що містить в собі всю потрібну для роботи MySQL інформацію. Тут зберігаються всі налаштування сервера баз, відомості про плагіни, дати і часу, настроювані облікових записів, їх права і паролі. В контексті даної статті нас цікавить значення останніх.

Щоб дізнатися пароль MySQL, потрібно зайти на сервер під своїм учеткой адміністратора. Потім відкрити системну базу даних з іменем «mysql» і зробити вибірку значень з таблиці user. Для наочності всі цікаві відомості (значення паролів) ми отримаємо за допомогою php MyAdmin.

Відкриємо системну БД, і подивимося на вміст потрібної нам таблиці «зблизька»: в одному з її стовпців прописані всі паролі. Як бачите, нічого складного і для цього нам знадобилося всього кілька хвилин. Але що це таке? Хто «поцупив» з таблиці зрозумілі значення паролів і замінив їх якийсь «абракадаброю»!

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Спокій, тільки спокій! Ніхто нічого не поцупив», просто в таблиці вказуються вже паролі хешірованние. А що у вас очі такі здивовані? Зараз розкладемо все «по поличках».

Як відбувається шифрування в MySQL

Справа в тому, що дана СУБД використовує власний алгоритм шифрування паролів. Точніше, не шифрування, а хешування. З-за цього поки ніхто не придумав спосіб, як розшифрувати паролі в MySQL.

Існують різні алгоритми хешування, але якщо при цьому буде використовуватися криптографічна толь, то шансів отримати значення пароля зводиться майже до 0. Криптографічний сіль – це додатковий рядок, яка приєднується до первісного значення. У результаті на виході (після хешування) виходить майже «невзламываемый» пароль.

Для установки пароля СУБД використовує функцію PASSWORD(). Вона не повертає значення, яке було послане їй на обробку. Тому використовувати цю функцію для отримання «читабельного» пароль не вийде. Єдине, що можна зробити – це отримати хешированную рядок за первісним значенням. Синтаксис запиту:

SELECT PASSWORD(‘значение_пароля’);

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Це ж значення можна знайти в системній таблиці user (службова база даних mysql), куди заносяться всі облікові записи користувачів СУБД і хешірованние значення паролів.

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Шляхом перебору (якщо знати хоча б приблизну структуру значення) можна спробувати згадати забутий пароль. Але відновити таким чином повністю невідоме значення практично неможливо. Пам’ятайте, що всі описані вище операції проводяться під обліковим записом адміністратора (root).

Використання зворотного шифрування

Дізнатися пароль MySQL, заданий системою за замовчуванням для облікових записів сервера не вдасться. Але це можна реалізувати на рівні баз даних або навіть таблиць. Багато движки і CMS, які працюють на основі MySQL, мають власну (вбудовану систему аутентифікації.

Наприклад, якщо відкрити таблицю БД WordPress, де движок зберігає всі дані про користувачів, то в стовпці user_pass ви побачите таку ж «абракадабру», як і в системній базі MySQL. Це говорить про те, що дана CMS також використовує один з алгоритмів незворотного шифрування паролів (md5).

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Але можна реалізувати схему аутентифікації на основі оборотних методів шифрування. Цим і займемося. Не будемо сьогодні засмучувати себе чорним кольором, і всі запити SQL виконаємо не через командний рядок, а в phpMyAdmin. Для експериментів я скористаюся тестової БД «db1», в якій зберігається одна таблиця з «звірятками» (animal). Додамо нову таблицю з іменами господарів звірів і паролем для входу в їх «клітини» Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Запустіть програму, зліва в списку виберіть потрібну БД. Після цього перейдіть у вкладку SQL і запустіть на виконання наступний код:

CREATE TABLE user_animal (id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(15) NOT NULL, pasword BLOB NOT NULL, PRIMARY KEY (id));

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Тепер перед тим, як дізнатися пароль MySQL, давайте заповнимо створену таблицю даними. Для цього ми знову використовуємо запити SQL, як чинять справжні розробники. Код запиту:

INSERT INTO user_animal (`name`,`pasword`) VALUES (‘holms’,’dog’);

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Змінюючи значення в дужках після оператора VALUES, додайте в таблицю ще кілька рядків. Тепер зробимо з неї вибірку даних:

SELECT * FROM user_animal;

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Взагалі-то фігня виходить! Значення паролів всіх користувачів видно «як на долоні». Зараз ми їх злегка «хешанем» за допомогою вбудованої функції AES_ENCRYPT. Вона приймає 2 значення: стовпець для хешування і значення «солі»:

UPDATE user_animal SET pasword=AES_ENCRYPT(pasword,’animal’);

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Тепер давайте ще раз зробимо вибірку з таблиці і подивимося на її результати:

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Як бачите, одні «блобы» вийшли замість паролів. Це говорить про те, що значення надійно хешированы, і без «солі» зламати їх практично неможливо. Але ми з вами знаємо, в чому «сіль». Зараз я вам покажу, як дізнатися паролі до бази даних MySQL, точніше повернути їх у більш «читається» вигляді. Для цього використовується інша функція — AES_DECRYPT(). Код запиту з її «участю»:

SELECT AES_DECRYPT( pasword, ‘animal’ ) FROM user_animal;

Результати цієї вибірки:

Як дізнатися пароль MySQL або не шукаємо пригод на свою голову

Як бачите, щоб дізнатися пароль MySQL, потрібно правильно розуміти, в чому «сіль» проблеми. А якщо лазити по чужих заборів, то можна запросто отримати заряд солі (з рушниці) в те місце, на яке не варто зайвий раз шукати пригод. Краще цей час витратити на вивчення MySQL.