All streams
Search
Write a publication
Pull to refresh
3
0

User

Send message
ПроSEOшили Хабр по запросу «точка G»
// Использование функции "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


Эксплуатируется через query string ?param[]=123
«Назовите хакерскую атаку, название которой состоит только из hex символов»

DEFACE может :)

listen2me (stegano)
To bypass PRISM guys sometime uses this technique
Flag is MD5(message_from_MP3)

Задание не решил никто. Качаем файл, определяем, что это не mp3 (по заголовкам), даем расширение архива, открываем — архив битый, внутри два файла — calc.exe и reverse_something.txt. Начинаем копать, внутри находятся заголовки JPEG задом наперед. Вытаскиваем картинку, в картинке тоже стегано. Вроде как и в ней — ключ.

Ковырнул, в JPEG-е раз и два подозрительные base64-блобы:
image

image

Может это «MD5(message_from_MP3)»?

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

У SMB есть удивительная возможность — протокол умеет произвольный доступ к файлу (чтение из любого места). Получается, чтобы сэкономить время и трафик, и при этом не париться со странными мерками «сколько байт из начала хватит чтоб распознать любой файл», достаточно дёргать из файла те области, которые проверяются сигнатурами libmagic (см всё-таки /usr/share/misc/magic).

Вот это было бы интересно: модификация утилиты file, которая читает из файла только нужные области, ну и кеширует то что уже прочитала, чтоб несколько раз не дёргать один участок.
Судя по strace-у, сейчас file всегда сразу грузит первые 98304 байта файла. Наверно это максимальный оффсет, который встречается в моей базе magic.
И в чем смысл статьи?.. Можно не брутфорсить, оставляя N байт от файла, а заглянуть в /usr/share/misc/magic и увидеть все своими глазами.

А у PDF просто первые 5 байт жестко закреплены спецификацией:
Развернуть
image

Тут ведь трэйдофф между сложностью и надежностью определения типа. То есть можно определять хоть по одному байту, если например стоит задача выбрать тип из PDF, PNG, EXE и WAV, с очень низкой надежностью. При этом в случае PDF можно без увеличения сложности алгоритма расширить этот размер до 5 байт, и выиграть в надежности. Ну а с другой стороны весов (максимальная надежность, максимальная сложность) — просто парсить файл по спецификации. Распарсился как PDF? Это PDF.
А что делать, если человек подошел к терминалу, держа в руке 150 рублей, а у нас пакеты на 100 (99) и 300 (299)?

Точно подмечено! Не раз страдал из-за отсутствия сдачи со 150 рублей, когда покупал что-то за 100

image
PS. Уважаемые хабравчане! Подскажите, пожалуйста, как без мучений переверстать большие таблицы из Word HTML в разметку Хабра?

А вы я смотрю знаете как сформировать имидж компании…
После обновления чёнть отвалится
My.Eyes.Are("Bleeding");
Спасет, до тех пор пока не понадобится строковый параметр в запросе :-)
Кстати интересно, что 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";
?>


vos@ctfsu ~/t $ php pdo_test.php utf8 1
Returned rows: 1
vos@ctfsu ~/t $ php pdo_test.php utf8 -1
Returned rows: 0
vos@ctfsu ~/t $ php pdo_test.php utf8 "1'||1#"
Returned rows: 1
vos@ctfsu ~/t $ php pdo_test.php gbk "1'||1#"
Returned rows: 1
vos@ctfsu ~/t $ php pdo_test.php gbk `echo -ne "1\xbf'||1#"`
Returned rows: 12


Пример обхода addslashes() взят из этой статьи.

Похоже, PDO эмулирует prepared statements силами PHP, вместо настоящих препейров в MySQL.
О. Как и в прошлом году, спасибо за интересный квест! ;-)
Смешно…

Вполне ожидаемо мне ответили, что это проблема Java, браузер работает правильно, и пишите письма в Oracle. В Oracle я уже писать не стал, с моей точки зрения, Java тоже работает правильно. Выполняет код, загружает файлы, запускает программы, на что жаловаться? Проблема заключалась как раз в том, что Opera разрешает Java выполнять неизвестный код от неизвестных источников.


А почему не в Microsoft написали, ведь их ОС разрешает опере выполняться и подгружать java-плагин для обработки java-апплетов
И в нем работает TAP!
Ну что, надо потестить!

password cgsgsuxx
connect e.vos.uz
Все кабинки будут на ночь оккупированы хитро улыбающимися личностями в шапочках из фольги
Блин, дошел до 9ого, решил посмотреть сколько их всего там :(( Я думал 10. Мотивация испарилась

Чего зря пропадать.. Хвастаюсь. (решения)
Challenge 1 — выделить повторяющиеся слова — 25 + 22 символа
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/

Information

Rating
6,203-rd
Location
Россия
Registered
Activity