malabares de tipo PHP con MAC

1

Estoy tratando de resolver un desafío, y sospecho que tiene que ver con malabarismo de PHP , porque recibo esta base64 codificada json cooke como respuesta {"User":"foo","MAC":"bar"}

  

ERROR # 2

     

El MAC calculado (es decir, el resultado de hash_hmac() ) es una cadena   que contienen caracteres hexadecimales

     

El uso de una comparación suelta significa que si un entero era   proporcionado en la carga útil de JSON, la cadena HMAC se malabares con   un número

Creo que con un MAC, por ejemplo, "ff6d0...5885d" , el malabarismo de PHP se comparará con int(6) ya que es el primer número. Mi idea wat para POST con la base64 codificada json: {"User":"Admin","MAC":6}

Pero esto no funcionó ... ¿el malabarismo solo funciona con los MAC que comienzan con números?

    
pregunta Ludisposed 19.01.2018 - 12:47
fuente

1 respuesta

5

El algoritmo que PHP usa para forzar cadenas a enteros es documentado aquí . En particular:

  

El valor viene dado por la parte inicial de la cadena. Si la cadena comienza con datos numéricos válidos, este será el valor utilizado. De lo contrario, el valor será 0 (cero).

Tu suposición fue que:

  

Creo que con un MAC, por ejemplo "ff6d0 ... 5885d", el malabarismo de PHP se comparará con int (6), ya que es el primer número

Pero el 6 no aparece al principio de esa cadena, aparece solo después de la secuencia no numérica ff . Por lo tanto, el valor se forzará a int(0) .

Sin embargo, si tenemos un hash diferente, di "6ffd0 ... 5885d", el 6 aparece al principio de la cadena, por lo que esa cadena se aplicará a int(6) .

Como supuso, esta coacción puede ocurrir durante la comparación en ciertas circunstancias, como se describe en las notas sobre operadores de comparación en el manual .

    
respondido por el IMSoP 19.01.2018 - 13:03
fuente

Lea otras preguntas en las etiquetas