CTF ringzer0team - SQL Injection 9: What's the definition of NULL

Мне не всегда понятно по какому критерию определяется число выдаваемых баллов за задание, но вот очередное простецкое задание за которое дают 3 очка! Приступим

В самом начале в лоб дается подсказка о условии в SQL запросе, куда уж проще, единственное затруднение которое здесь есть (если это конечно можно назвать затруднением) данные из запроса закодированы в base64:

?id=MQ== //1 после декодирования

Сразу скажу что если сделать инъекцию с id=0, то вернет сообщение о том что пользователя с таким id не существует (или что то типа того), в задании так явно фигурирует NULL, что прям напрашивалось чтоб попробовать. Инъекцию написал сходу, возможно есть варианты и короче, но даже не интересно было искать варианты проще:

-1) OR id IS NULL OR(1=2
после перевода в base64 и подстановки в адресную строку:
?id=LTEpIE9SIGlkIElTIE5VTEwgT1IoMT0y

Итоговый запрос получается (естественно только condition WHERE):

WHERE (id IS NOT NULL) AND (ID = -1) OR id IS NULL OR(1=2 AND display = 1)

Соответственно единственное условие здесь которое выполнится это id IS NULL. И получаем заветный флаг!

Согласитесь что было очень просто.

That's all, folks!