// Использование функции "strcmp"
strcmp($aaa, $bbb) == 0;
Хех, советуете "=="? ;-)
php > var_dump(strcmp("hello", array(123)));
Warning: strcmp() expects parameter 2 to be string, array given in eval()''d code on line 1
NULL
php > var_dump(NULL == 0);
true
Задание не решил никто. Качаем файл, определяем, что это не mp3 (по заголовкам), даем расширение архива, открываем — архив битый, внутри два файла — calc.exe и reverse_something.txt. Начинаем копать, внутри находятся заголовки JPEG задом наперед. Вытаскиваем картинку, в картинке тоже стегано. Вроде как и в ней — ключ.
Ковырнул, в JPEG-е раз и два подозрительные base64-блобы:
У SMB есть удивительная возможность — протокол умеет произвольный доступ к файлу (чтение из любого места). Получается, чтобы сэкономить время и трафик, и при этом не париться со странными мерками «сколько байт из начала хватит чтоб распознать любой файл», достаточно дёргать из файла те области, которые проверяются сигнатурами libmagic (см всё-таки /usr/share/misc/magic).
Вот это было бы интересно: модификация утилиты file, которая читает из файла только нужные области, ну и кеширует то что уже прочитала, чтоб несколько раз не дёргать один участок.
Судя по strace-у, сейчас file всегда сразу грузит первые 98304 байта файла. Наверно это максимальный оффсет, который встречается в моей базе magic.
И в чем смысл статьи?.. Можно не брутфорсить, оставляя N байт от файла, а заглянуть в /usr/share/misc/magic и увидеть все своими глазами.
А у PDF просто первые 5 байт жестко закреплены спецификацией:
Развернуть
Тут ведь трэйдофф между сложностью и надежностью определения типа. То есть можно определять хоть по одному байту, если например стоит задача выбрать тип из PDF, PNG, EXE и WAV, с очень низкой надежностью. При этом в случае PDF можно без увеличения сложности алгоритма расширить этот размер до 5 байт, и выиграть в надежности. Ну а с другой стороны весов (максимальная надежность, максимальная сложность) — просто парсить файл по спецификации. Распарсился как PDF? Это PDF.
Кстати интересно, что PDO страдает той же проблемой что и addslashes() при использовании некоторых мультибайтовых кодировок (т.е. некорректно экранирует символы и дает провести инъекцию):
<?php
// argv[1] - mysql charset
// argv[2] - id for select
$db = new PDO("mysql:host=localhost;dbname=testdb", "root", "", array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES ' . $argv[1]));
$statement = $db->prepare("SELECT * FROM lists WHERE id = ?");
$statement->execute(array($argv[2]));
echo "Returned rows: ", $statement->rowCount(), "\n";
?>
Вполне ожидаемо мне ответили, что это проблема Java, браузер работает правильно, и пишите письма в Oracle. В Oracle я уже писать не стал, с моей точки зрения, Java тоже работает правильно. Выполняет код, загружает файлы, запускает программы, на что жаловаться? Проблема заключалась как раз в том, что Opera разрешает Java выполнять неизвестный код от неизвестных источников.
А почему не в Microsoft написали, ведь их ОС разрешает опере выполняться и подгружать java-плагин для обработки java-апплетов
Хех, советуете "=="? ;-)
Эксплуатируется через query string ?param[]=123
DEFACE может :)
Может это «MD5(message_from_MP3)»?
У SMB есть удивительная возможность — протокол умеет произвольный доступ к файлу (чтение из любого места). Получается, чтобы сэкономить время и трафик, и при этом не париться со странными мерками «сколько байт из начала хватит чтоб распознать любой файл», достаточно дёргать из файла те области, которые проверяются сигнатурами libmagic (см всё-таки /usr/share/misc/magic).
Вот это было бы интересно: модификация утилиты file, которая читает из файла только нужные области, ну и кеширует то что уже прочитала, чтоб несколько раз не дёргать один участок.
Судя по strace-у, сейчас file всегда сразу грузит первые 98304 байта файла. Наверно это максимальный оффсет, который встречается в моей базе magic.
А у PDF просто первые 5 байт жестко закреплены спецификацией:
Тут ведь трэйдофф между сложностью и надежностью определения типа. То есть можно определять хоть по одному байту, если например стоит задача выбрать тип из PDF, PNG, EXE и WAV, с очень низкой надежностью. При этом в случае PDF можно без увеличения сложности алгоритма расширить этот размер до 5 байт, и выиграть в надежности. Ну а с другой стороны весов (максимальная надежность, максимальная сложность) — просто парсить файл по спецификации. Распарсился как PDF? Это PDF.
Точно подмечено! Не раз страдал из-за отсутствия сдачи со 150 рублей, когда покупал что-то за 100
А вы я смотрю знаете как сформировать имидж компании…
Пример обхода addslashes() взят из этой статьи.
Похоже, PDO эмулирует prepared statements силами PHP, вместо настоящих препейров в MySQL.
А почему не в Microsoft написали, ведь их ОС разрешает опере выполняться и подгружать java-плагин для обработки java-апплетов
Challenge 2 — матчить серый цвет в куче форматов — 412 символов
Challenge 3 — матчить дату-время — 146 символов
Challenge 4 — *курсив* — 36 + 13 символов
Challenge 5 — матчить форматированные числа — 54 символа
Challenge 6 — матчить IPv4-адреса в куче форматов (АД) — 519 символов
Challenge 7 — матчить домены с http/https — 94 символа
Challenge 8 — отмечать повторяющиеся элементы списка — 37 + 16 символов
Challenge 9 — применять синтаксис разметки для ссылок — 124 + 23 символа (пригодился регексп из задания про домены)
P.S. Еще хвастаюсь: на 9 первых ушло 1,5 часа \m/