Ключ должен заметить, что сравнение выполняется с использованием ==
, что открывает опции, включающие жонглирование типов.
Строки в формате 1e2
(где 1 и 2 - числа любого размера) интерпретируются как scientifi c -значения с плавающей запятой на PHP. Поскольку любое значение в форме 0e...
оценивается как ноль (ноль для любой степени все еще равен нулю), следующий шаг - найти число X
, для которого md5 га sh из 0eX
имеет ту же форму .
MD5 га sh из 0e215962017
является 0e291242476940776845150308577824 , обратите внимание, что каждый символ, отличный от начального 0e
, является цифрой c.
Так при сравнении значений (в общих чертах, используя ==
), оба оцениваются как ноль.
Кредит https://github.com/bl4de/ctf/blob/master/2017/HackDatKiwi_CTF_2017/md5games1/md5games1.md, который проделал (гораздо более сложную) работу по нахождению числа .