Здравствуйте, шановні читачі.
Перейду відразу до справи. Дана стаття описыват як можна DoS-ить якщо на сайті можлива SQL Injection.
——————-
ПЕРЕДМОВА
——————-
Часто буває так, що ми знаходимо SQL Injection на якомусь сайті. Але з різних причин не можемо знайти імена таблиць і полів. Ось тоді нам усім хочеться хоч якось помститися адмінам сайту.
Другий варіант. У вас є ворог у кого є сайт. На цьому сайті ви знайшли уразливість SQL Injection. Але ви думаєте, що просто вкрасти паролі буде занадто мало. Ось тоді і до нас на допомогу приходить DoS.
——————-
АТАКА
——————-
Отже ми маємо уразливий сайт. www.example.com. Нехай нефильтруемая мінлива там id. Тобто у нас проходять запити типу www.example.com/index.php?id=-1+union+select+null,null,null,version(),null.
І ми хочемо за однією (чи може відразу двох) з причин задосить сайт.
В SQL є така функція benchmark. Вона використовується для того, щоб обчислити заданий вираз задану кількість разів. Так наприклад запит типу BENCHMARK(10000, now()) означає ВИКОНАТИ now() 10000 разів. (now() возвращяет поточну дату у форматі РРРР-ММ-ДД ГГ: ММ: СС). Такий запит не зможе з легкістю проковтнути навіть потужний сервер. Не кажучи вже й про посередній. Також можна використовувати ось яким чином BENCHMARK(100000, BENCHMARK(10000, NOW())). Ну це ви і самі зрозумієте 🙂 Наостанок: запит як ви вже й самі зрозуміли буде виглядати наступним чином
www.example.com/index.php?id=1+BENCHMARK(100000, BENCHMARK(10000, NOW())). Чим більше кількість нулів тим довше триває DoS.
Може виникнути питання: чому досить засобами SQL Injection, а не просто завантажити програму ітп? Відповідь: DoS як такої не завжди можливий. Сервер можуть пропатчити.
——————-
ПІСЛЯМОВА
——————-
Стаття є моя інтелектуальна власність. Будь-яке копіювання без вказівки на джерело є протизаконним.
Стаття не є спонуканням до дії. Це лише для ознайомлювальних цілей. Автор не несе відповідальності за дії які були після прочитання цієї статті.
Джерело.