Visualizzazione dei risultati da 1 a 10 su 18

Visualizzazione discussione

  1. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Da ex bug hunter:

    # config.php
    Codice PHP:
    <?php
    /**
     * config.php
     * 
     * Funzioni di gestione database
     *
     * @author Your Name <your@email.com>
     * @copyright Copyleft (c) 2014, Your Name
     */

    /**
     * Connession, selezione e selezione codifica caratteri al database
     *
     * @param    void
     * @return    void
     */
    function dbConnect() {
        
    $dbHost "";
        
    $dbName "";
        
    $dbUser "";
        
    $dbPass "";
        
        if ( !
    $dbConnect = @mysql_connect$dbHost$dbName$dbUser$dbPass ) ) {
            exit( 
    "Impossibile connettersi al database." );
        }
        
        if ( !@
    mysql_select_db$dbName$dbConnect ) ) {
            exit( 
    "Impossibile selezione il database." );
        }
        
        
    // Richiesto per prevenire il bypass delle funzioni di escaping
        
    @mysql_query"SET NAMES 'utf8'" );
    }

    /**
     * Esegue le query proteggendole da attacchi SQL Injection
     *
     * @param    string        Stringa query da eseguire
     * @param    array        Argomenti da passare alla query
     * @return    resource    Resource id della query
     */
    function dbQuery$query$params = array() ) {
        global 
    $dbConnect;

        
    // Verifica che ci siano parametri da inserire, eventualmente li cicla e li purifica
        
    if ( count$params ) ) {
            foreach ( 
    $params as $key => $value ) {
                
    $params[$key] => mysql_real_escape_string$query );
            }
        
            
    $query vsprintf$query $params );
        }
        
        
    // Esegue la query
        
    if ( !$queryId = @mysql_query$query$dbConnect ) ) {
            exit( 
    mysql_error() );
        }
        
        return 
    $queryId;
    }
    ?>
    *.php
    Codice PHP:
    <?php
    /**
     * 
     * 
     * 
     *
     * @author Your Name <your@email.com>
     * @copyright Copyleft (c) 2014, Your Name
     */

    // Costanti fondamentali
    define"DS"DIRECTORY_SEPARATOR );
    define"ROOT_PATH"dirname__FILE__ ) . DS );
     
    // Include le librerie fondamentali
    require_once( ROOT_PATH "config.php" );

    // Connessione e selezione al database
    dbConnect();

    // Dati cookie provenienti dall'utente
    $data = array();
    $data["nome"] = isset( $_COOKIE["nome"] ) ? $_COOKIE["nome"] : "";
    $data["pass"] = isset( $_COOKIE["pass"] ) ? $_COOKIE["pass"] : "";

    // Verifica se l'utente è loggato
    if ( $data["nome"] != "" && $data["pass"] != "" ) {
        
    $query    "SELECT uid, name,email, password, crediti,autorizzazione FROM utenti WHERE name = '%s' AND password = '%s' LIMIT 1";
        
    $result dbQuery$query$dbConnect );
        if ( 
    mysql_num_rows$result ) == ) {
            
    $resrow mysql_fetch_array$result );
            echo 
    "Bentornato " htmlspecialchars$resrow["name"] ) . "<br>";
            echo 
    intval$resrow["crediti"] ) . " <img src='img/crediti.png'></img><br>";
            echo 
    "Hai i privilegi da " . ( $resrow["autorizzazione"] == "amministratore" "utente" ) . "<br><br>";
            echo 
    "Clicca <a href='logout.php'>Qui</a> per disconnetterti";
            exit;
        }
    }

    // Verifica se l'utente sta eseguendo il login
    if ( !defined"IS_USER" ) && isset( $_POST["nome"] ) && isset( $_POST["pass"] ) ) {
        
    $query    "SELECT uid, name,email, password, crediti,autorizzazione FROM utenti WHERE name = '%s' AND password = '%s' LIMIT 1";
        
    $result dbQuery$query$dbConnect );
        if ( 
    mysql_num_rows$result ) == ) {
            
    $resrow mysql_fetch_array$result );        
            
    setcookie"nome"    $resrow["name"]     , time()+3600 );
            
    setcookie"crediti"$resrow["crediti"] , time()+3600 );
            
    setcookie"pass"    $resrow["password"], time()+3600 );
            
            echo 
    "Benvenuto " htmlspecialchars$resrow["name"] ) . ", hai effettuato correttamente l' accesso.";
            
    header"refresh: 3; url=home.php" );
            exit;
        }
    }

    // Errori?
    if ( isset( $_POST["login"] ) ) {
        echo 
    "<font color='red'>Utente e/o Password errata.</font><br />";
    }

    echo <<<TPL
    <form method="POST">
    Nome Utente: <input type="text" name="nome"><br />
    Password: <input type="password" name="pass"><br />
    <input type="submit" name="login" value="Accedi">
    </form>
    TPL;

    mysql_close$dbConnect ): 
    ?>
    Così non è hackerabile da nessuna tecnica attualmente conosciuta.

    Lo soluzione da te postata può essere hackerata nel seguente modo:

    1) creare un cookie utente con il nick dell'admin.
    2) se non si è a conoscenza del nick dell'admin o della struttura della piattaforma, bisogna eseguire diversi steps per scoprire nomi e struttura della tabella e infine estrarre i dati dal database, creando sempre un cookie con dice sql maligno.
    Ultima modifica di zacca94; 24-04-2014 a 15:00

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.