Комментарии 83
Наверняка же есть ещё куча параметров содержимого таблицы?
Иначе у них реально отсуствует экранирование.
Для SQL есть такое мнемоническое правило: NULL — он как ведьмин студень: превращает в себя всё, до чего только дотрагивается, поэтому (12345 = NULL) -> NULL.
Тут, похоже, на библиотеку разбора входящего XML/JSON, где вместо отсутствующего значения передаётся строка NULL и при встрече него зачем-то заносится NULL вместо строкового значения. Менять протокол обмена не хотят, поскольку это может быть обновление ещё и все камер (килер для хакера дешевле выйдет, Механик — редкий специалист, который в сервисе убьёт машину так, что будет выглядеть как поломка и она никогда не попадёт на дороги).
where data->'someProperty' != 'null'
Совершенно неожиданно, но 'null'::jsonb
это совершенно не тот NULL, который Вы ожидаете пруф где-то здесь
select (('{"a":2, "b": null}'::JSONB) -> 'c') is null -- TRUE
select (('{"a":2, "b": null}'::JSONB) -> 'b') is null; -- FALSE
В вашем примере же всё логично, оператор -> выдаёт null, если поле отсутствует в json и 'null'::json, если оно имеет значение null. Иначе бы было невозможно различить две этих ситуации.
Надо было назвать dev null, тогда бы было ok.
Экранирование входных данных, это весьма неоднозначный путь.
Просто никогда не создавайте SQL запросы в рантайме. Используйте SQL параметры и не будут проблемы.
Если так можно, то научите, пожалуйста.
Проблема как я понимаю в том что количество параметров заранее неизвестно? Если так, то стандартное решение сгенерировать коллекцию параметров и подставить в строку запроса имена параметров, а не их значения, например "select * from table where id in (@p1,@p2,...,@pn)". В этом случае использование параметров получается более громоздким чем обычно что раздражает программистов, но что поделать, безопасность требует жертв.
Ну, в SQL Server так можно. Но только в хранимках...
Вот чудные американцы, где еще такое увидишь)
В РФ ПДД тоже предусматривает существование таких знаковПростите, но нет. Номерные знаки обязаны иметь вид соответствующий действующему госту. И ГОСТ Р 50577-2018, как и его предшественники, подобное не предусматривает. В живую вы могли видеть сувенирные номера, которые водитель навесил вместо своих в нарушение закона.
"Я подумал: я крут, стану невидимкой, — говорит Droogie, который работает консультантом по безопасности в компании IOActive"
Интересно, какого результата этот консультант ожидал? Что во всех полицейских базах произойдет деление на 0?
SELECT id, sum, plate, address WHERE plate IS NOT NULL; //формирование списка штрафов за сегодня по всем должникам и рассылка.
Как было реально: по номеру система сформировала штраф и собрала в кучу все значения с NULL в поле, правда, как указали выше, так не дожлно быть, но на практике случилось.
Скорее всего все он понимал, и задача стать невидимкой успешно выполнена. Его 'NULL ' успешно теряется среди тысяч нераспознанных номеров. Если бы он просто прицепил картонку с надписью NULL — прокатило бы (до первого живого полицая).
"И почему только в нашей стране слова "сильно умный нашёлся" являются оскорблением? " (с)
Лично у меня среди знакомых есть и те, и другие. И это разные люди.
Если бы этот «хакер» был умным, то видимо у него были бы нулевые штрафы, а не те, которые он получил в результате. Разве нет?
Если бы этот «хакер» был умным, то видимо у него были бы нулевые штрафы
А у Вас при попытке вмешаться в работу незнакомой Вам системы всё-всё с первого раза получается именно так, как Вы планировали?
Длительное время я, приступая к анализу какой-либо системы, начинал с чего-то вроде "если бы мне нужно было решить задачу, которую решает эта система, я бы написал код так-то и так-то". Как я ошибался! Практически каждый раз выяснялось, что в исследуемой системе использовалось гораздо более дебильное менее элегантное и более дырявое решение :( Теперь я начинаю с посылки "как бы эту задачу решил жертва ЕГЭ средний идиот". (Как видите, в рассматриваемой системе/базе произошло именно это — сравнение со строковым значением "NULL" вместо типа NULL.) Возможно, хакер из статьи просто ещё не дорос до понимания этого.
Вы абсолютно правы в том, что хакер из статьи не дорос до анализа того, как может повести себя неизвестная ему система при поступлении в нее сформированных им исходных данных. Будь он более опытен, он бы легко пришел к выводу, что с определенной вероятностью суммы штрафов могут как уменьшиться, так и возрасти. Да и вообще может произойти много всего непредвиденного. Слишком непредвиденного, чтобы экспериментировать на своем «реальном аккаунте».
Значит, одно из двух: либо он неадекватно оценил собственные силы, либо желание эффектно «понтануться» оказалось сильнее голоса разума.
Оба этих варианта прекрасно подходят к портрету типичного «выпендрежника». В чем я данного персонажа и подозреваю.
То есть в системе раз в месяц(?) собирается штрафов на 12000$ буквально никому, но всем плевать и никто даже не пытается их проверять?
Обычное дело — машина после дилершипа (только что купленная) имеет временный номер на месяц, напечатанный на обычной бумажке у дилера. Которую кладут под заднее стекло или лепят куда попало а не на номерное место (оторвется же). В принципе всем пофиг.
Вобще чувак попал адски. Если в полиции что то можно доказать (потеряв минимум полдня и предъявив машину) то штрафы передаются для обработки в частную компанию которой удалять и править совсем не упало (удалятся же реальные штрафы и значит процент). А потом это все передается на коллекшн и тем доказывать вообще дохлый номер — только через суд. По каждому штрафу. Каждому. И той частной — только суд.
мало того что это дорого и очень затратно но даже по времени много. А машину у суда парковать геморрой.
Штрафы из других штатов не передаются — но если заехать в Аризону или Неваду и там что то висит на NULL — то остановит первый же патруль который обратит внимание на номер. Причем разбираться на дороге не станет а отконвоирует. А за злостную неуплату вообще то тюрьма может и засветить. Вполне реально, особенно если через толл проехали или с криминалом связано.
Как в ногу себе выстрелить только хуже.
Вобще чувак попал адски
Или нет, если найдет достаточно ушлого адвоката, чтобы стрясти с полиции компенсацию за моральный ущерб и потерянное время.
Не стоит фантазировать на основе голливуда. Адвокат не окурок, на улице не валяется. Это минимум 400 баксов в час. И таких часов будет много, и все из своего кармана.
За потерянное время никто компенсаций не платит, как и за моральный ушерб.
Что вообще такое "моральный"? И причем здесь полиция.А реальный доказать надо.
Причем даже если номер сменит, его адрес и имя уже связали с нулем — отмазываться долго. А по тому, что он хотел за спидинг тикетов не получать — настоящее приключение впереди.
Так что как в стишке "его пример другим наука" и "на всякую хитрую попу что то найдется.."
Не всегда попытка хака системы будет безнаказанной.
Был такой плакат — "не стой под стрелой" именно для такого случая.
Представьте иной сценарий. Вам нравится военная форма и прочее хаки. Ходите только в этом и это круто. Но! не растет борода. Покупаете накладную, черную и густую, наклеиваете на суперклей и теперь хорошо.
Затем по приколу меняете имя. Это законно, проблем нет, государство делает. Для полного веселья выбираете Шамиль Басаев. Нуачо? Имея ввиду всех надинамить — прийдет Омон/ФСБ а вы им в лицо "ха-ха-ха!" и они прикольно утрутся.
Затем внезапно ночью к вам вламывается группа захвата, выносят окна и двери и мнут ребра. И никаких "хахаха" не получается. Глядь — ошибочка вышла. А через пару дней опять рейд и опять распластывают. И снова лицо синеет. Оказывается не так весело как задумывалось.
На жалобу резонно говорят, да ошибка, — смените имя и не играйте с огнем и не подставляйтесь. Система задумывалась не для игрунов и хакеров а для дела.
Но вы желаете быть шамилем басаевым и точка.
Спрашивается, кто виноват? Государство что выдало вам новое имя? Или омон который исполняет свою работу, ее часть, не желая вам зла. Или программисты систем, которые реагируют на шамильбасаева (подтвержденного: форма, борода) посылкой сообщения омону.
Или то, что система несовершенна как и все системы, но так как делали для другого то до вас лично, нарочно ищушего дырку, проблем не было.
Суд вас пошлет, потому как органы вправе и обязаны реагировать, а ошибка ваша вина.
Именно поэтому Митнику дали не медаль, а срок. И всем прочим хакерам.
Возвращаясь к оригинальному случаю — государство имеет право выписывать штрафы и вам присылать. У вас есть законом даденая возможность оспорить и не платить. Что он и делал. Ушерба денежного нет.
Компенсаций за ошибочно выписанный штраф и усилия на его оспаривание законом не предусмотрены (что логично, мало ли кто как устал при оспаривании).
А в систему выписывания левых штрафов она сам залез, по доброй воле, причем не случайно.
На жалобу резонно говорят, да ошибка, — смените имя и не играйте с огнем и не подставляйтесь.Вы идёте менять имя, а там вам говорят: «Шамилям Басаевым имя не меняем.» ¯\_(ツ)_/¯
Омон/ФСБнадо в тюрягу или в дурку надолго, в первую очередь того кто санкционировал операцию. Потому что вид и имя это явно недостаточно чтоб делать хоть что то а тем более так.
Или программисты систем, которые реагируют на шамильбасаева
браво, настоящий бородач стал бы использовать своё настоящее имя и ходить с бородой. Ёлки, это безотказный вариант обрущить вообще систему. Организовать чтоб человек 1000 так делало.
Пограничник тогда говорил, что если терминал дату не принимает — значит такой не существует, и у меня паспорт не действительный и вообще я — шпион.
Иногда сложно распознать шутит ли пограничник или нет, сами знаете)) Но в страну пустили
Хакер жалуется на полицию: его автомобиль с номерным знаком NULL получил штрафов более чем на $12 000