Aufpassen, dass kein bösartiger Code eingeschmuggelt wird, am besten, du liest dir das hier durch.
Warum das jetzt bei dir nicht klappt, weiß ich nicht, poste mal den ganzen Code, wo du $_POST[id] verarbeitest.
Aufpassen, dass kein bösartiger Code eingeschmuggelt wird, am besten, du liest dir das hier durch.
Warum das jetzt bei dir nicht klappt, weiß ich nicht, poste mal den ganzen Code, wo du $_POST[id] verarbeitest.
Tripod hat wahrscheinlich einfach die Fehlermeldung ausgeschaltet ![]()
if (($_GET['page'] + $imagesPerPage) > $numberofactionpics) {
$imagesPerPage = $numberofactionpics % $_GET['page'];
$imagesPerPage = $imagesPerPage ? $imagesPerPage : $numberofactionpics;
}
Das dürfte Zeile 200 sein, oder? Dann änder das mal auf
if ((($_GET['page'] + $imagesPerPage) > $numberofactionpics) && $_GET['page']) {
$imagesPerPage = $numberofactionpics % $_GET['page'];
$imagesPerPage = $imagesPerPage ? $imagesPerPage : $numberofactionpics;
}
Ungestet, aber müsste klappen. Eine Modulo-Berechnung wird intern als Division durchgeführt. Eine Zahl % 0 ist somit nicht definiert.
Ähm, du machst einen entscheidenden Denkfehler. Die Variablen sind einzeln per $_POST['variablenname'] verfügbar. D.h. du hast eine Variable $_POST['rechnungsnummer'] und $_POST['2tevar'], mit denen kannst du nach Belieben verfahren.
Dass du sie dann noch korrekt validieren solltest, muss ich noch erwähnen.
Ja, musst sie dann mit fopen("uploads/$mailfeld/info.txt", "w+") öffnen, dabei wird sie automatisch erstellt. Wenn $mailfeld aus Benutzereingaben kommt, musst du aufpassen, dass $mailfeld richtig validiert wird, siehe https://www.forum-hilfe.de/showthread.php?p=328000#post328000 und folgende.
Ich kenn mich mit der Forumsoftware leider überhaupt nicht aus. Grob gesagt musst du gucken, wo überall ein Verweis auf diese Datei arcade_cache.php ist (dafür brauchst du einen Editor, der in mehreren Dateien suchen kann), dann gucken, was von wo includiert wird und den überflüssigen Verweis entfernen (zwei Slashes vor die Zeile zu schreiben dürfte reichen). Ich hoffe aber, dass hier noch jemand mit mehr Fachwissen antwortet...
Verstanden, danke ![]()
Hallo,
ich bin gerade dabei, mich in den Bereich OOP einzulesen.
In dem Artikel zu Funktionen auf php::bar steht nun:
ZitatAb PHP 5 werden Objekte immer als Referenz übergeben.
Dazu ein Beispiel, das ich mir überlegt habe.
Versteh ich das richtig, dass die letzte und vorletzte Zeile absolut das gleiche machen und das obige Zitat lediglich bedeutet, dass ich es mir sparen kann, das &-Zeichen hinzuschreiben?
Läuft das ganze denn lokal bei dir oder hast du es auf einen Server hochgeladen? Wenn letzteres, ersetz "http://localhost/security/shop.php" durch "security/shop.php".
...bevor du mit JS is nen sinnlosen schwachsin schlecht zusammen codest...
Na, ich find nicht, dass man direkt mit derart Titeln um sich werfen muss (auch wenn sie in so einer schönen Alliteration stehen
) Der Meinung jedoch, dass das Script sinnlos ist, stimme ich natürlich zu.
So ziemlich gar nichts, außer evtl String-Ersetzungsfunktionen, aber auf die würde ich mich da auch nicht verlassen. Am einfachsten und sichersten ist immer noch, alle Werte, die vorkommen dürfen, in ein Array zu packen und dann abzugleichen, ob die Eingabe im Array ist.
Könnte evtl einer der Mods den Thread splitten?
Weil die Server wohl so gut gesichert waren. Aber wenn es unbedingt sein muss, hier hast du eine Endlosschleife durch Selbstinklusion.
http://www.lhc-facts.ch/index.php?page=index.php%00
Was passiert, wenn ich per $_POST['seitenname'] folgendes übergebe?
Zitat
../index.php%00
Dann schreibt das Script in
Zitat../seiten/../index.php%00.html
Die rot gekennzeichneten Teile fallen aber quasi raus aus den folgenden Gründen:
%00, also 0 Byte, kennzeichnen auf Unix (und die meisten Server laufen ja auf Unix) das Ende der Zeichenkette. ../ navigiert ein Verzeichnis hinauf.
In Wirklichkeit wird mein geposteter Inhalt also in
Zitat../index.php
geschrieben und die vorhandene Datei dabei überschrieben.
Normalerweise kann man %00 zwar nicht so einfach per POST verschicken, aber wozu gibt es Erweiterungen wie Hackbar oder Tamper Data. Selbstverständlich sollten diese nur zu Testzwecken benutzt werden ![]()
Pion, zu deinem Codeschnipsel:
<?
if(isset($_REQUEST['save']))
{
$seitenname = $_POST['seitenname'];
$elm1 = $_POST['elm1'];
if(get_magic_quotes_gpc()){ $elm1 = stripslashes($elm1); };
$datei = fopen("../seiten/$seitenname.html","w+");
fwrite($datei,$elm1);
}
?>
Alles anzeigen
Bitte google mal nach "directory traversal null byte", dann weißt du auch, warum ich auf deinem Server beliebig PHP-Dateien anlegen könnte.
Wobei man bei Variante 2 und 3 der Vollständigkeit halber anmerken muss, dass die nur mit short_open_tag = 1 gehen...
Nachtrag: Das ganze nennt sich übrigens CSRF (Cross-Site Request Forgery).
Es geistern diverse Empfehlungen für PHPmailer durchs Forum. Ob es Open Source ist, weiß ich nicht.
Zitat2. Verwende den Codeschnipsel von bandit bei jeder Abfrage. Alternativ steigst du auf einenn Datanbankwrapper wie MDB2 oder PDO um.
Du solltest daran denken, den Codeschnipsel wieder rauszunehmen, wenn du das Script dann veröffentlichst, siehe meinen Thread über Sicherheitslücken oder google nach XSS mysql_error