Почему это PHP сравнение не вернет True - PullRequest
0 голосов
/ 16 апреля 2020

Почему это PHP сравнение не вернет True, и есть ли способ, которым я могу вернуть его? :: 0e830400451993494058024219903391 :: QNKCDZO False

1 Ответ

5 голосов
/ 16 апреля 2020

Ключ должен заметить, что сравнение выполняется с использованием ==, что открывает опции, включающие жонглирование типов.

Строки в формате 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, который проделал (гораздо более сложную) работу по нахождению числа .

...