Инъекция выполнила команду, и дома он это обнаружил. Почему дома? хз, можно считать, что дом - это base, и там грохнули table
Какая нужна предыстория? Прикол в том, чтобы вывести из строя систему автораспознавания номеров
Вряд-ли в камере есть база. База на сервере, куда номер попадет в виде текста с распознанной картинки. В теории, компьютеру насрать, какой там текст и, вероятно, защиты от SQL injection, в данном случае, нет никакой (т.е. не предполагается доступ сторонний извне системы).
Допускаю, что базу таки потрепать можно, зная ее структуру и способ атаки.
Скажем так, сайты, которые ломались подобным способом через форму для отправки отзыва, я видел
защиты от SQL injection, в данном случае, нет никакой (т.е. не предполагается доступ сторонний извне системы).Вот такие предположения и ведут к факапам. Защита от sql injection должна быть всегда!
Да ладно, в нормальных языках в современных фреймфорках она встроена по умолчанию. Даже с сильным желанием не получится вызывать селект с какой-то ебаниной
Крайне сомневаюсь, что даже в +- больших проектах сильно заморачиваться на этот счёт, чтоб под делать апдейт под одним, а селект под другим
В больших проектах если твой проект работает из под околорутового пользователя на продакшене — то ты банально не пройдёшь sec validation, да и на продакшн базе тебе такое сделать не дадут. Придет DBA и популярно расскажет почему так делать нельзя.
Значит вы далеки от такой разработки. К примеру в оракле команда drop относится к ddl, и права как правило на ddl есть только dba и лиц отвечающих за релизы. Также роли на чтение и изменение данных тоже всегда разносятся(тот, кому достаточно только читать данные, не должен иметь других прав). А вообще в запросах должна быть валидация параметров и переменные должны биндится, а не подставляться через конкатенацию.
Фреймворки тут не нужны, prepared statement механизм встроен в реляционные БД по умолчанию.
Ох сколько раз я видел тупо сложение строк для формирования запроса... И вроде все такие современные ;)
Валидация должна быть по формату, тупо поле не иметь такой размереости, ну и экранировать в текст
через форму для отправки отзываЭто нужно чтобы форма отправки не записывалась в базу, а обрабатывалась как код на сервере.
Каким... умным.... надо быть, чтобы такое сделать?
Вопрос не ко мне, я не программист. Разгребал ситуацию, когда инъекцией сайт сломали, попутно смотрел ютубы и читал, как это бывает вообще
уже нет.
раньше было возможно,
софт камеры распознавал строку, а дальше обрабатывал как строку, распознавал команду и дропал базу.
и судя по посту, сейчас это возможность кое-где еще остается
Не думаю.
Во-первых есть номера других стран, во вторых, в некоторых странах есть именные номера. Как минимум, хотя бы по этой причине, надо распознавать все.
Рамка номера может быть выше, ниже, слева, справа. Скорее всего, распознаётся контрастный участок с символами определенного шрифта, чтоб не читать всякие наклейки и аэрографии
Ну и, как писали выше, и так сойдёт - никто ж из программистов не предполагал, что это можно провернуть извне, т.к. доступ к базе закрыт.
Другой вопрос, что надо знать структуру базы, как минимум, чтобы такое провернуть.
Поэтому 50/50.
Да тупо БД нихуя не сделает, если в одном из параметров селекта будет дроп таблицы. Никто уже 100 лет как не конкатинирует запросы руками. Если так и делают, то сами напросились. Картинка не более, чем прикол ради прикола.
Да бред бредовый. Для распознавания номеров тренируются сети на датасетах этих самых номеров. Во первых такую картинку сеть даже не распознает как номер, во вторых, даже если произойдет чудо, не пройдет проверка на постпроцессе (длина текста, набор символов, допустимые знаки) и в третьих значение в запрос попадает как параметр. Хоть X Y N вы там напишите, как ddl запрос это проканает.
Не исключай индусский код, иногда дыры бывают настолько очевидными, что удивляешься, как это вообще возможно...
Я так в 2010-2011 году в украинском ПриватБанке премию получил за обнаружение тупейшей уязвимости в терминалах. До сих пор письма на мыле храню, как память)
Ну распознаётся и распознаётся. Но либы, которые взаимодействуют с базой на автомате, существуют последние лет 10-15.
Команде 'insert into *xxx* values (..., "Drop table", ...)' будет совершенно похуй что какая там sql инъекция
Хз, про какие либы идёт речь и про какую ситуацию. Сайт на пхп вскрывали (не самописный) через инъекцию, потому как автор доработки под него не сделал валидацию типа данных и вместо int можно было передавать запросом все.
И я хз, какой там механизм работы каких-то библиотек - я уже разгребал последствия. П.С. вообще не программист.
Если распознавание было настроено на специфичные области у машин, ориентировалось по контрасту или просто считывали все что считает буквами, то могло и в базу вредоносную команду занести.
Что нашлось, тем и делюсь, проводить расследование этого инцидента на фейковость желанием не горю.
Хоть раньше и кодил, но в бд маловато за ненадобностью и все же не понятен механизм. Если считываются данные для распознания то их обработчик что ли гоняет по различным методам в которые включается не просто распознание и сравнение , но и запуск ? По мне кривое решение, хотя в чем то может и есть универсальность.
Иерархично отдельно, но взаимодействуют же. Получается снимок(или ряд снимков) по определенным шаблонам, примитивно говоря с условиями прямоугольника и определенными атрибутами, распознаются к примеру OCR-подобными библиотеками и прогоняются по базе на совпадения. Механизм управления базой по принятым сообщениям из полученных данных мне не понятен, почему и спросил на счет универсальности обработчика.
Никакой инъекции не случилось, на фото табло работает штатно, просто прикол (смешной, да).
Ну и про штрафы вообще не в тему, такие табло не штрафуют, а просто предупреждают.
В конце-концов я совсем и не программист, так что и неправдоподобная ересь могла быть добавлена в сохраненки, чтоб потом умничать не разбираясь, что ж поделать, ехехех





