ВОПРОС · Q&A

Получение бинарной маски файла из Windows

1 ответов 2,5 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор вопроса
Здаровствуйте.

Если переименовать исполняемый UNIX файл в картинку, например, JPEG или PNG, то нет ни какой проверки mime типа для браузера и стороны сервера. Мы можем просто загрузить shell или exploite и выполнить картинку.

Однако, для UNIX существует утилита XXD, которая может выковырять бинарную маску файла и показать, что это ELF или не DOCx(Word Document).

Я проверяю это следующим образом. Есть дескриптор файлов разрешенных для загрузки на сервер и я к каждому файлу прописываю маску бинарника для проверки, а дальше гоню проверку на соответствие заявленному расширению файла.

PHP:
shell_exec('xxd '. $f[0] .' | head -1')))[0]

Например, башка JPEG соответствует маске 'ffd8' и мы можем идентифицировать, что программа не притворяется фотографией.

Вопрос такого характера: как это или с помощью какой утилиты можно это проверить на системе Windows?

Может есть какой-то exe для CMD, который я смогу включать в дистрибутив и использовать через shell_exec. В общем нужен детектор кода башки файла для Windows.
 
Вопрос такого характера: как это или с помощью какой утилиты можно это проверить на системе Windows?

Может есть какой-то exe для CMD, который я смогу включать в дистрибутив и использовать через shell_exec. В общем нужен детектор кода башки файла для Windows.

В Windows 10 есть такая штука как WSL (Windows Subsystem for Linux ) - слой совместимости для запуска Linux-приложений. Попробуй ее, так у тебя кстати будет полноценная переносимость bash скриптов между разными ОС.
 

Ещё по теме