Parsen und Umgang mit der Eval-Funktion in PHP
P粉476547076
P粉476547076 2023-08-13 17:40:10
0
2
466

Haftungsausschluss: Dies ist nur ein Beispiel für das Erlernen der PHP-Code-Injektion, kein Produktionscode, der in irgendeiner Weise verwendet werden soll. Mir ist völlig bewusst, dass dies keine gute Codierungspraxis ist.

Ich habe das folgende PHP-Skript:

    Beispielskript 

Beispielseite

Jetzt zur Mathematik. Bitte geben Sie zur Berechnung eine Formel ein. Zum Beispiel: 1+1.

Formel:

Das Ergebnis ist:"; eval("echo(".$_REQUEST["maths"].");"); echo "

"; } ?>

Dieses Skript ist anfällig für die Einschleusung von PHP-Code. Ich konnte es auf folgende Weise knacken (meist durch Versuch und Irrtum herausgefunden):

$a='1');phpinfo();echo($a

Allerdings verstehe ich die Begründung nicht ganz. Soweit ich weiß, muss ich die echo-Anweisung vervollständigen, meinen eigenen Code einfügen (z. B. phpinfo()) und dann eine andere Funktion (z. B. echo) schreiben, um die schließende Klammer zu verarbeiten.

Ich dachte, Code wie dieser würde funktionieren:

");phpinfo();echo("

Dies funktioniert jedoch nicht, da phpinfo als Teil des Strings betrachtet wird und nicht von der eval-Funktion ausgewertet wird. Ich habe auch erfolglos versucht, den Anführungszeichen zu entkommen.

Frage:

  • Wie kann hier Code richtig eingefügt werden?
  • Warum funktioniert$a='1');phpinfo();echo($a?


P粉476547076
P粉476547076

Antworte allen (2)
P粉561749334

问题在于这个语句是无效的:

echo ();

它会导致解析错误。所以你需要注入一些东西来避免这个错误。例如:

$var = "1); phpinfo(); echo (1"; eval("echo ($var);");
    P粉033429162

    当你使用那个输入时,替换变量的结果是:

    eval("echo ($a='1');phpinfo();echo($a);");

    所以这里赋值了$a='1',并且输出了该赋值的结果(即被赋给$a的值)。然后执行了phpinfo()。最后再次输出了$a

    如果你尝试使用);phpinfo();echo(,它不会起作用,因为它试图执行echo ()。但是echo至少需要一个参数。

    所以要在这里注入代码,你必须确保输入以在echo (之后是有效的内容开头,并且以在);之前是有效的内容结尾。将你想要注入的额外代码放在这两部分之间。

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!