ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / Archiv / [fixed] Navpath kann per Get manipuliert werden


Seite 1 von 2 – nächste Seite >>

SyntaxError schrieb am 08.02.2003 um 20:00 Uhr

hier könnt ihr euch den Fehler ansehen:
http://www.thwboard.de/forum/index.php?navpath=<script%20language\"Javascript">alert('Hallo%20wie%20geht%20es!')</script>;

Könnte zum CrossSiteScripting benutzt werden.

Fix:
In der header.inc.php einfach nach
if( get_magic_quotes_gpc() )
{
$HTTP_GET_VARS = r_stripslashes($HTTP_GET_VARS);
$HTTP_POST_VARS = r_stripslashes($HTTP_POST_VARS);
$HTTP_COOKIE_VARS = r_stripslashes($HTTP_COOKIE_VARS);
$GLOBALS = r_stripslashes($GLOBALS);
}
dies
$navpath=NULL;
einfügen.

theDon schrieb am 08.02.2003 um 21:07 Uhr

übel :|

SyntaxError schrieb am 09.02.2003 um 00:28 Uhr

Es ist nur übel, wenn man das Forum über einen manipulierten Link aufruft.

MAGIX schrieb am 09.02.2003 um 01:01 Uhr

oha das fix ich ma eben

Luki schrieb am 09.02.2003 um 17:41 Uhr

das kann man sicherlich auch noch auf andere anwenden!!

navpath alleine ist glaube ich nur ein Teilproblem, oder?

Bluetooth schrieb am 10.02.2003 um 01:46 Uhr

nein navpath ist das einzige ... ist die einzige Variable, die nicht mit
$foo = '';
initialisiert wird

TheTinySteini schrieb am 11.02.2003 um 12:22 Uhr

... und $debug

Jonas schrieb am 11.02.2003 um 14:52 Uhr

nen fix fuer beide waere nen einfaches $navpath = ''; und $debug = ''; ueber allen includes oben in der header.inc.php ;)

theDon schrieb am 11.02.2003 um 23:29 Uhr

jonas ist nen blitzmerker :P

Jonas schrieb am 12.02.2003 um 18:23 Uhr

theDon postete
übel :|

jetzt sag mir mal welcher comment sinnvoller war :D :þ

seikeinfloh schrieb am 16.02.2003 um 18:02 Uhr

Könnte man damit nicht auch Code ausführen???

Die Template Klasse benutzt nämlich eval() welches versucht code auszuführen in einem String, wenn ich jetzt über den Bug PHP-Code eingebe müsste er den ausführen oder??? :?

Eine Url darf angeblich 4096 Zeichen lang sein was ja schon einige Code Möglichkeiten gibt (z.B.: include[_once](), require[_once]()).

Das Problem ist zwar gefixed aber würd mich trotzdem interessieren, weil dann müsste ich das fixen oder das Board schließen, andernfalls nicht sofort....

SyntaxError schrieb am 16.02.2003 um 23:19 Uhr

Nein. Weil die eval()-Funktion Variabeln wie Variabeln behandelt und dessen Inhalt nicht als Code interpretiert.

seikeinfloh schrieb am 17.02.2003 um 12:40 Uhr

Bist du dir da ganz sicher??? In der Dokumentation steht was anderes... :\

mfg floh

Bluetooth schrieb am 17.02.2003 um 13:44 Uhr

funktioniert nicht, zumindest ist mir nichts bekannt ... falls du eine Möglichkeit finden solltest, dann schreib sie mir bitte unbedingt per PM und nicht öffentlich hier im Forum.

SyntaxError schrieb am 17.02.2003 um 18:06 Uhr

@seikeinfloh: In welcher Doku?

seikeinfloh schrieb am 17.02.2003 um 18:50 Uhr

eval

(PHP 3, PHP 4 )

eval -- Wertet einen String aus, als wäre er PHP-Code

Beschreibung:

mixed eval ( string code_str)


eval() versucht, den in code_str enthaltenen String als PHP-Code auszuführen. Abgesehen von anderen Zwecken kann dies nützlich sein, um Code auszuführen, der aus einer Datenbank ausgelesen wird.

Beim Gebrauch von eval() gilt es einige Faktoren zu beachten. Die Zeichenkette code_str muss gültigen PHP-Code enthalten, einschließlich syntaktisch richtiger Begrenzungszeichen (also incl. ";"-Abschluss-Zeichen für einzelne Anweisungen, sonst bricht der PHP-Parser in der folgenden Zeile mit einem Fehler ab.

Beachten sie, dass die innerhalb von eval() vorgenommenen Variablen-Zuweisungen nach Abarbeitung auch im Hauptskript ihre Gültigkeit behalten.

Eine return-Angabe beendet sofort die Auswertung des Strings. Mit PHP4 können sie ein return verwenden, um das Ergebnis der Funktion eval() zu erhalten. In PHP3 ist eval() nämlich vom Typ void und liefert nichts zurück.

Quelle: http://www.php.net/manual/de/function.eval.php

mfg floh

TheTinySteini schrieb am 17.02.2003 um 19:11 Uhr

Also meines wissens geht das nicht. Beispiel:
http://www.thwboard.de/forum/showtopic.php?threadid=3911&time=&pagenum=lastpage&debug=%3C?php%20echo%20'test';%20?%3E

... wer im Quelltext guckt, wird <?php echo 'test'; ?> finden, aber es wird nicht ausgewertet.

seikeinfloh schrieb am 17.02.2003 um 19:33 Uhr

Habs mal ausprobiert klappt wirklich nicht... :)

SyntaxError schrieb am 17.02.2003 um 21:39 Uhr

Also ich kann keinen Wiederspruch der Doku zu meiner Aussage erkennen.

eval() versucht, den in code_str enthaltenen String als PHP-Code auszuführen.

Sagt doch eindeutig, dass coder_str als PHP-Code behandelt wird. Daraus ergibt sich, dass sich in coder_str erhaltende Variabeln (wie Navpath) auch wie Variabeln behandelt werden und dessen Inhalt nicht ausgeführt wird.

seikeinfloh schrieb am 17.02.2003 um 22:40 Uhr

Aber zu PHP-Code gehören eigentlich nicht nur Variablen oder??? :?

SyntaxError schrieb am 18.02.2003 um 14:16 Uhr

Ja, aber $navpath ist eine Variabel und wird deswegen auch so behandelt.
Was sonst noch alles in der eval-Funktion ausgeführt wird ist doch egal.

seikeinfloh schrieb am 18.02.2003 um 14:54 Uhr

Wie rufst du eval() auf???

SyntaxError schrieb am 18.02.2003 um 18:31 Uhr

wird so aufgerufen:
eval($Tframe->GetTemplate());

Man müßte es so aufrufen, damit der Inhalt von $navpath wie code behandelt wird:
eval($navpath);

seikeinfloh schrieb am 18.02.2003 um 22:29 Uhr

Eigentlich und uneigentlich darf da kein Unterschied bestehen da code_str ein Werte Parameter ist... *hmm*

SyntaxError schrieb am 19.02.2003 um 08:57 Uhr

Ist doch wohl ein unterschied:

$temp="echo \"$navpath\";";
eval($temp);

und

eval($navpath);

Seite 1 von 2 – nächste Seite >>