Hors-sujet

vendredi 8 mai 2020, 23:34  #1
Hors-sujet | Petit éclaircissement en PHP ?
Le_codeir_fute
  • 40 posts

Bonjour à tous,

Voilà, je me pose une question qui va paraître toute bête aux programmeurs experts mais en ce qui concerne le langage PHP, quelle est la différence entre ces deux bouts de code ? :

include("essai"."php")
include("essai.php%00"."php")

Car j’ai créé une machine virtuelle sous Wamp pour tester des payloads en PHP (en vue d’une future résolution des challenges du type faille include).
Le premier marche, mais le second non. Où se situe l’erreur ? Le caractère "%00" signifie bien une fin de chaîne, non ? Alors où se cache la différence ? Voilà, merci de m’avoir lu, et encore désolé si la question a pu paraître stupide, mais il faut bien un début à tout - ;)

Bon root ! :)

EDIT : Problème résolu !

samedi 9 mai 2020, 00:47  #2
Hors-sujet | Petit éclaircissement en PHP ?
m31z0nyx
  • 394 posts

Bonjour,

Je ne suis pas persuadé pour ma part que le fait de détailler des méthodes qui spoilent (tu dis toi même quel en est l’objectif) des épreuves du site soit dans l’esprit de ce forum. :$

samedi 9 mai 2020, 13:16  #3
Hors-sujet | Petit éclaircissement en PHP ?
Le_codeir_fute
  • 40 posts

Bonjour,

Merci pour cette-non réponse mais j’ai fini par trouver par moi-même ! De plus, je ne demandais en aucun cas de leaker, cette question était plus globale et s’adressait à ma culture générale de programmeur (d’où l’intérêt de mettre ce post dans la catégorie Hors-sujet !) 😉
Sinon, pour le problème j’ai compris qu’il s’agissait d’une mauvaise interprétation de ce caractère null byte : ce caractère ne représente rien. Donc en réalité les deux chaines sont équivalentes.

Les modos peuvent donc clore ce post !

samedi 9 mai 2020, 14:02  #4
Hors-sujet | Petit éclaircissement en PHP ?
ElTouco72
  • 283 posts

« j’ai compris qu’il s’agissait d’une mauvaise interprétation de ce caractère null byte : ce caractère ne représente rien. Donc en réalité les deux chaines sont équivalentes. »

non tu n’as pas bien compris

ces deux chaines ne sont pas égales
%00 c’est de l’url encoding
le null byte en php c’est \0
le null byte représente bien quelque chose, il est même indispensable

samedi 9 mai 2020, 14:18  #5
Hors-sujet | Petit éclaircissement en PHP ?
Le_codeir_fute
  • 40 posts

Ah bon ? Alors si je mets if ("ee"=="ee\0suitesupprimée"){echo 1;}, PHP devrait me renvoyer "1" car logiquement, avec le null byte les caratères "suitesupprimée" de la condition sont ignorés ! Or PHP ne semble pas l’interpréter de cette façon... Je pense donc que c’est un peu plus compliqué que ça...

samedi 9 mai 2020, 15:18  #6
Hors-sujet | Petit éclaircissement en PHP ?
ElTouco72
  • 283 posts

ce que tu réponds n’a pas trop de rapport avec ce que je dis