TGViewer
Артем Лещев | ИТ Артем Лещев | ИТ @asleshchev · 70 subscribers
Post #124 118
🔪 SQL-инъекции.

Помню, как-то начальник запостил инфу в чат аналитиков, что на проде нашли инъекцию. Предложил на тестовом стенде пощупать уязвимость. Через несколько месяцев запостил еще раз. Детали я уже подзабыл, но сути это не меняет: разработчики иной раз забивают на DevSecOps. Аналитиков же могут заставить подключиться к разбору продовых инцидентов. Ha-ha, classic 🚬.

В чем суть SQL-инъекции? В незащищённые формы ввода, URL-параметры или поля поиска прописывается частичка SQL-кода. Она передается на сервак и встраивается в основной SQL-код, меняя его логику. Мошенник получает возможность взаимодействовать с базой данных.

Классический пример. Допустим, в админке отрабатывает запрос к базе:


SELECT * FROM users WHERE login = '{логин_пользователя}' AND password = '{пароль}';


Пройдоха передает в логин что-то вроде:

' OR 1=1; --


В пароль можно вообще ничего не передавать, т.к. он закомментируется. Или передать что-то номинальное. Давайте, передадим qwerty. На серваке отработает запрос:

SELECT * FROM users WHERE login = '' OR 1=1; -- AND password = 'qwerty';


Смысл в том, что условие 1=1 является истиной, а дальнейший код закомментирован, а значит взломщику нет нужды вводить правильные credentials.

О трюке с закрытием кавычки и передаче истинного условия
OR TRUE; --
можно прочитать, например, в документации Python:

# Never do this -- insecure!
symbol = input()

# ' OR TRUE; --

sql = "SELECT * FROM stocks WHERE symbol = '%s'" % symbol
print(sql)

# SELECT * FROM stocks WHERE symbol = '' OR TRUE; --'

cur.execute(sql)


На практике же, взломщику неизвестно каким образом формируется запрос и какими данными он оперирует. Поэтому SQL-инъекции превращаются в искусство, требующее набивки руки и насмотренности. Для оптимизации трудозатрат существуют сканеры. Самая известная, это SQLMap. Пока сам еще не юзал.

Инъекцией можно вытворять самую разнообразную логику. Например:

'; DROP TABLE users; --


И получим:

SELECT * FROM users WHERE login= ''; DROP TABLE users; --' AND password = '';


То есть: пытаемся отгрузить данные пользователя, а потом дропаем таблицу.

Есть, как минимум, 2 способа попытаться определить кол-во полей в таблице:

' order by 10 --
' group by 10 --


Есть слепые инъекции / blind injections направленные на получение косвенных сведений. Классический пример, это задержка производительности, показывающая что бэкенд, как минимум, уязвим:

' OR IF(1=1, SLEEP(5), 0) --


А по этой ссылке описаны атаки с регулярными выражениями. И так далее, и так далее...

✔️Потренироваться в инъекциях можно на сайте:
https://www.alexbers.com/sql/1.php
✔️ Эти же задания скопированы на ХакерДом, с приятным глазу интерфейсом:
https://sql.training.hackerdom.ru/
✔️Почитать как решать задачи можно в статье:
https://habr.com/ru/articles/253885/

Я сумел самостоятельно решить только первые 5 из 10 задач. Дальше подсматривал. На 6-й задаче я все же сумел сам догадаться, что если кавычки запрещены, то надо использовать другой формат слова god. А вот каким образом - не допер. Надо было вызвать функцию CHAR() передав в нее ASCII-коды букв слова god:

login = CHAR(103, 111, 100)


Либо перевести god в кодировку HEX. Получится 676F64. Только не забывайте подставлять префикс 0x, чтобы не скормить базе просто буквоцифры:

login = 0x676F64


А вы сталкивались с SQL-инъекциями? Сколько задач на сайте смогли сами решить? 😉

🐧 Понравился пост? Подписывайся, чтобы не пропустить следующий.

Артем Лещев
  • ❤ 1
More from @asleshchev
  1. Aug 31, 2026Post #146
  2. Aug 9, 2026🛡 XSS-атака и аспекты безопасного API. Когда я 3-4 года назад работал менеджером ИТ-проек…
  3. Aug 1, 2026Есть у меня пара знакомых программистов, которые работают с железом. На мой вопрос — кто и…
  4. Jul 26, 2026🛡 CSRF-атака и аспекты безопасного API. CSRF произносится как sea-surf. Cross-Site Reques…
  5. Jul 17, 2026Post #142
  6. Jul 9, 2026На работе была проблема: сессия быстро протухала в Text-To-Speech-сервисе. Частые залогины…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →