2 votes

Comparaison maladroite des fonctions en PHP

Donc j'ai ce fragment de code :

function compare1($s1, $s2)
{
    return $s1===$s2;
}

function compare2($s1, $s2)
{
    return !strcmp($s1, $s2);
}

function challenge($s1, $s2) //Objectif : retourner TRUE
{
    return compare1($s1, $s2) ^ compare2($s1, $s2);
}

On me demande de fournir/ajouter/assigner des valeurs aux variables $s1 et $s2 de sorte que la dernière fonction retourne TRUE.

J'ai essayé presque tout ce à quoi j'ai pu penser, comme $s1='1' et $s2=1 qui renvoie TRUE :

var_dump(compare1('1', 1) ^ compare2('1', 1)); //output: int 1

Le créateur du défi m'a dit que je ne devrais pas ou plutôt je ne peux pas assigner des valeurs entières aux variables mais le problème est que aucune variation booléenne n'a fonctionné. Voici le site sur lequel je parle afin que vous puissiez voir si vous pourriez éventuellement trouver une solution : http://securitytraps.no-ip.org/challs/strcmp/

Merci d'avance :)

2voto

Orangepill Points 17802

Que diriez-vous de

$s1 = null;
$s2 = "";

Cela ne fonctionne pas sur l'outil fourni mais fonctionne à partir de la ligne de commande.

aussi

$s1 = "";
$s2 = false;

2voto

chrislondon Points 5751

D'accord, donc le premier élément à noter est que le site est un piège de sécurité, ils cherchent donc à vous montrer des vulnérabilités en PHP. Donc, bien que les autres réponses soient valables, elles ne fonctionnent pas lorsqu'elles sont transmises sur internet.

Pour résoudre le défi, vous devez en fait modifier le HTML de la page et transformer l'une des clés en un tableau comme ceci : puis soumettre le formulaire. Lorsque cela se produit, la fonction strcmp comparera $_POST['s1'] (chaîne de caractères) avec $_POST['s2'] (tableau), ce qui fera évaluer la fonction strcmp comme vraie en PHP !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X