Visualizzazione risultati 1 fino 15 di 15

Discussione: falla script login

  1. #1
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito falla script login

    Codice PHP:
    $MySql = "SELECT * FROM Utente";
    $MySql .= " WHERE Nome = '$Login1'";
    $MySql .= " AND Pass = '$Pass1'";

    dal form di invio login, questo script a vostro avviso è fallabile??

    [ modder aggiustate il titolo please?? ]
    Ultima modifica di araim : 22-01-2008 alle ore 15.26.14

  2. #2
    Guest

    Predefinito

    Questo non è uno script. Non fa nulla.


    Ciao!

  3. #3
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    va bè scusa, la query.
    di per se inviando il tutto
    tramite form, e prendendo i dati
    come post, si può bucare?

  4. #4
    Guest

    Predefinito

    Dovresti postare tutto lo script, con gli eventuali controlli, ecc.


    Ciao!

  5. #5
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    lo scrivo, ma è lunghetto...

    Codice PHP:
    <? session_start();
    session_register('Login');
    session_register('Luogo');
    session_register('Stanza');
    session_register('IP');
    session_register('LastTime');
    session_register('Master');
    session_register('Sesso_S');
    session_register('IDGilda_S');
    session_register('ImgGilda_S');
    session_register('DescGilda_S');
    session_register('IDRazza_S');
    session_register('ImgRazza_S');
    session_register('DescRazza_S');
    session_register('Super_S');
    session_register('Oggetti_S');
    session_register('Prigione_S');
    session_register('Esilio_S');
    session_register('LogFinanza_S');
    session_register('LogDoppi_S');
    session_register('Gst_AR_S');
    session_register('Gst_Razza_S');
    session_register('Admin_S');
    session_register('AdminExt_S');

    include (
    'inc/parametri.inc.php');

    #controllo di provenienza dallo stesso dominio

    /*
    if (strtolower(substr($_SERVER['HTTP_REFERER'], 0, strlen($par_SiteURL)))!=strtolower($par_SiteURL)) {
    echo '<b>Login non avvenuto dal sito '.htmlspecialchars($par_SiteURL).' ma dal sito '.substr($_SERVER['HTTP_REFERER'], 0, strlen($par_SiteURL)).'</b><br>';
    echo 'In caso di problemi, mandare il copia-e-incolla di questa pagina per email a info@2citta.it<br>';
    echo '<a href="'.$par_SiteURL.'" target=_top>Vai alla home page</a>';
    exit();
    }
    */

    include ('inc/open2.php');

    $MySql = "SELECT * FROM BlackList WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND Granted = 0";

    $Login1 = $_POST['Login1'];
    $Pass1 = $_POST['Pass1'];

    $Result = mysql_query($MySql);

    if (
    mysql_num_rows($Result) == 1) {

    echo
    "Questa postazione &egrave; esclusa dal gioco!";

    echo
    "<br>[problemi tecnici, scusate il disagio stiamo lavorando per risolverli]";

    $MySql = "INSERT INTO LogErrori (Nome, Errore, DataEvento, IP) VALUES ('".$Login1."', '<Bloccato>', NOW(), '".$_SERVER['REMOTE_ADDR']."')";
    mysql_query($MySql);

    #$target="info@2citta.it";
    #$subject = "Le due città - Tentativo ".$Login1."-".$Login."-".$HTTP_COOKIE_VARS['lastlogin'].': '.$rs['Nota'];
    #mail($target, $subject, strftime("%d/%m/%Y %H:%M:%S %p").': segnalato tentativo di '.$HTTP_COOKIE_VARS['lastlogin'].'-'.stripslashes($Login1).'-'.$Login." di entrare\nIP ".$_SERVER['REMOTE_ADDR']."(".gethostbyaddr($_SERVER['REMOTE_ADDR']).")\nPass:".stripslashes($Pass1)."\n".$rs['Nota']);
    exit();
    };
    $rs->close;

    $MySql = "SELECT * FROM Personaggio";
    $MySql .= " WHERE Nome = '$Login1'";
    $MySql .= " AND Pass = '$Pass1'";

    $Result = mysql_query($MySql);
    $rs = mysql_fetch_array($Result);

    if (
    $rs) {

    $_SESSION['Login'] = trim($rs['Nome']);
    $IDRazza = $rs['IDRazza'];
    $IDGilda = $rs['IDGilda'];
    $_SESSION['Master'] = $rs['Master'];
    $Sesso = strtolower($rs['Sesso']);
    $_SESSION['Sesso_S'] = $Sesso;
    $_SESSION['Super_S'] = $rs['Super'];
    $_SESSION['Admin_S'] = $rs['Admin'];
    $Doppio = $rs['Doppio'];

    $_SESSION['Pres'] = 'S';
    $rs->close;

    $MySql = "SELECT * FROM Razza WHERE IDRazza = '$IDRazza'";
    $Result = mysql_query($MySql);
    $rs = mysql_fetch_array($Result);
    $ImgRazza = $rs['URLImg'];
    $DescRazza = $rs['Razza'];
    $rs->close;

    if (
    $IDGilda != "") {
    $MySql = "SELECT * FROM Gilda WHERE IDGilda = '$IDGilda'";
    $Result = mysql_query($MySql);
    $rs = mysql_fetch_array($Result);
    $ImgGilda = $rs['URLImg'];
    $DescGilda = $rs['Gilda'];
    $_SESSION['Oggetti_S'] = $rs['Oggetti'];
    $_SESSION['Super_S'] = $rs['Super'];
    $_SESSION['Esilio_S'] = $rs['Esilio'];
    $_SESSION['Prigione_S'] = $rs['Prigione'];
    $_SESSION['LogFinanza_S'] = $rs['LogFinanza'];
    $_SESSION['LogDoppi_S'] = $rs['LogDoppi'];
    $_SESSION['Gst_AR_S'] = $rs['Gst_AR'];
    $_SESSION['Gst_Razza_S'] = $rs['Gst_Razza'];
    $rs->close;
    } else {
    $ImgGilda = 'nessuno.gif';
    $DescGilda = 'Cittadino';
    $_SESSION['Oggetti_S'] = 0;
    $_SESSION['Super_S'] = 0;
    $_SESSION['Esilio_S'] = 0;
    $_SESSION['Prigione_S'] = 0;
    $_SESSION['LogFinanza_S'] = 0;
    $_SESSION['LogDoppi_S'] = 0;
    $_SESSION['Gst_AR_S'] = 0;
    $_SESSION['Gst_Razza_S'] = 0;
    }

    $_SESSION['IDGilda_S'] = $IDGilda;
    $_SESSION['ImgGilda_S'] = $ImgGilda;
    $_SESSION['DescGilda_S'] = $DescGilda;
    $_SESSION['IDRazza_S'] = $IDRazza;
    $_SESSION['ImgRazza_S'] = $ImgRazza;
    $_SESSION['DescRazza_S'] = $DescRazza;

    $Doppio = 0 + $Doppio;

    $IP = $_SERVER['REMOTE_ADDR'];
    $Host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

    $MySql = 'INSERT INTO LogEntrate (Nome, DataEvento, IP, Host) VALUES (\''.$_SESSION['Login'].'\', NOW(), \''.$_SERVER['REMOTE_ADDR'].'\', \''.$Host.'\')';
    $Result = mysql_query($MySql);

    if ((
    $HTTP_COOKIE_VARS['lastlogin'] != $_SESSION['Login'])
    &&(
    $HTTP_COOKIE_VARS['lastlogin'] != "")) {

    $MySql = 'SELECT COUNT(*) AS NumDoppi FROM Personaggio WHERE (Nome = \''.$_SESSION['Login'].'\'';
    $MySql .= ' OR Nome = \''.pars($HTTP_COOKIE_VARS['lastlogin']).'\')';
    $MySql .= ' AND Doppio = \''.$Doppio.'\' AND Doppio > 0';

    $Result = mysql_query($MySql);
    $rs = mysql_fetch_array($Result);
    if ((
    0 + $rs['NumDoppi']) < 2) {

    $MySql = 'INSERT INTO LogDoppi (Nome, Doppio, DataEvento, IP, Host) VALUES ';
    $MySql .= '(\''.$_SESSION['Login'].'\', \''.pars($HTTP_COOKIE_VARS['lastlogin']).'\', NOW(), \''.$_SERVER['REMOTE_ADDR'].'\', \''.$Host.'\')';
    $Result = mysql_query($MySql);

    };
    $rs->close;
    }

    setcookie('lastlogin',$_SESSION['Login'],0,'','',0);
    include (
    'inc/controlloesilio.php');

    } else {
    $rs->close;
    $_SESSION['Login'] = '';

    if ((
    $Login1 != '') && ($Pass1 != '')) {

    $MySql = 'INSERT INTO LogErrori (Nome, Errore, DataEvento, IP) VALUES (\''.$Login1.'\', \''.$Pass1.'\', NOW(), \''.$_SERVER['REMOTE_ADDR'].'\')';
    $Result = mysql_query($MySql);

    $MySql = 'SELECT count(*) FROM LogErrori WHERE IP = \''.$_SERVER['REMOTE_ADDR'].'\' AND DATE_ADD(DataEvento, INTERVAL 360 MINUTE) > NOW()';
    ##### si conteggiano solo i tentativi delle ultime sei ore #####
    $Result = mysql_query($MySql);
    $rs = mysql_fetch_array($Result);

    if (
    $rs[0]>9) {
    $MySql = 'INSERT INTO BlackList (IP, Nota, Ora, Host) VALUES ';
    $MySql .= '(\''.$_SERVER['REMOTE_ADDR'].'\', \''.$Login1.' (tenta password)\', NOW(), \''.$Host.'\')';
    $Result = mysql_query($MySql);
    }
    }
    };
    include(
    'inc/cambiastanza.php');
    $cambiastanzainc = true;
    if (
    $_SESSION['Login'] != '') {
    if (
    $_SESSION['Stanza'] == '') {
    cambiastanza(1,$_SESSION['Login']);
    };

    ### Da lanciare prima del controllo esilio ###
    $MySqlPersonaggio = "UPDATE Presenti SET ";
    $MySqlPersonaggio .= "Pres='$Pres', ";
    $MySqlPersonaggio .= "IDRazza='$IDRazza', ";
    $MySqlPersonaggio .= "DescRazza='$DescRazza', ";
    $MySqlPersonaggio .= "ImgRazza='$ImgRazza', ";
    $MySqlPersonaggio .= "Master='".$_SESSION['Master']."', ";
    $MySqlPersonaggio .= "Sesso='$Sesso', ";
    $MySqlPersonaggio .= "IDGilda='$IDGilda', ";
    $MySqlPersonaggio .= "DescGilda='$DescGilda', ";
    $MySqlPersonaggio .= "ImgGilda='$ImgGilda', ";
    $MySqlPersonaggio .= "LastIP='".$_SERVER['REMOTE_ADDR']."', ";
    $MySqlPersonaggio .= "UltimoRefresh=NOW(), ";
    $MySqlPersonaggio .= "OraEntrata=NOW(), ";
    $MySqlPersonaggio .= "OraUscita='2037-12-31 00:00:00' ";
    $MySqlPersonaggio .= "WHERE Nome = '".pars($_SESSION['Login'])."'";

    mysql_query($MySqlPersonaggio);

    # if (mysql_affected_rows() != 1) {
    # echo "Problemi tecnici nell'aggiornamento del personaggio<br><a href='Javascript:location.reload()'>riprova</a>";
    # } else {
    header("Location: main.php", true);
    exit();
    # }
    } else { ?>
    <center>Utente non riconosciuto<br>
    <br>
    Per recuperare la password, utilizzare il modulo presente nella home page<br>o scrivere all'indirizzo di email <a href="mailto:info@2citta.it">info@2citta.it</a>.<br>
    <br>
    Non tentare la password troppe volte, o questa postazione sarà automaticamente esclusa.
    <a href="index.php">Rientra</a>
    </center>
    <? session_destroy();
    }
    ?>

  6. #6
    Guest

  7. #7
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Si, è vulnerabile a quelle che vengono chiamate SQLinjection (cerca su google)

    Sempre controlla i dati che vengono in input prima di inserirli in una query.
    In questo caso controlla soprattutto gli apici.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  8. #8
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    binarysun me la scriveresti una Sql Injenction per capire che fa??
    magari basata su questa pagina, così studio una difesa per la
    stessa...

  9. #9
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Qua http://it.wikipedia.org/wiki/SQL_injection
    C'è la spiegazione ed esempio
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  10. #10
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    non funziona la SQL INJ...

  11. #11
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Prima di eseguirla prova a fare una stampa(echo) della query.

    Logicamente dall'esempio del sito devi sostituire "pippo" con un utente esistente.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  12. #12
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    è stato fatto, risulta eluso il bug dell'apice...

    EDIT: Altro DUBBIO:

    conoscendo la posizione in cui sono salvati i dati di accesso al
    database, si può cercare di prenderli in qualche modo??

    del tipo:

    file: ./include/pass.inc.php
    $par_DbUser = 'pippo'; #Database User
    $par_DbPassword = 'pluto; #Database Password
    $par_Conn = 'my_pippo'; #Database Name

    si riesce a sniffare quei dati in qualche modo??
    vorrei evitarlo sinceramente
    Ultima modifica di debug : 23-01-2008 alle ore 17.13.42

  13. #13
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    In teoria non è possibile farlo. Gli unici modi sono quello di riuscire a vedere il codice di quella pagina e quello di stampare le variabili di quella pagina.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  14. #14
    araim non è connesso Utente attivo
    Data registrazione
    26-06-2004
    Messaggi
    275

    Predefinito

    come si possono stampare le variabili di quella pagina?
    vorrei evitare tutte stè beghe di hacking sul mio sito...
    pensavo anche di scriverle criptate quelle psw...

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da araim Visualizza messaggio
    pensavo anche di scriverle criptate quelle psw...
    Non avrebbe senso. Se qualcuno riesce a vedere il tuo codice e la tua password (criptata o non), allora vede anche la password e l'algoritmo usati per criptare e decriptare la password per l'accesso al DB.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •