Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420

    modificare autenticazione

    Ciao a tutti;
    la domanda è ovviamente per mera curiosità, non esistendo autenticazioni così banali in nessun sito.
    Ho predisposto un modulo di accesso che verifica la stringa immessa da tastiera e la confronta con una stabilita a priori, per permettere o meno l'accesso ad una successiva pagina, con questo codice:

    codice:
    $passw = $_POST["password"];
    if ($passw == "prova") {
        header("refresh:2; URL=HTTP:/ecc ecc")
    }else{
    echo "password errata"
    }
    Ora a livello didattico, cercandone le vulnerabilità mi sono accorto che se sostituisco la condizione if con:

    codice:
    if ((1==1) or (1)
    tutta la condizione diventa:

    codice:
    if ((1==1) or (1) == "prova") {
    E mi permette di accedere qualunque cosa io digiti da tastiera.
    A questo punto, con il codice originale, provo a digitare direttamente da tastiera in fase di ingresso (1==1) or (1) ma non ottengo lo stesso risultato;
    Diciamo che è un po' ciò che si fa con l'sql-injection ma senza sql...
    Come mai digitando direttamente quel codice da tastiera non riesco ad accedere?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453


    Che centra la sintassi per l'sql injection con una banale condizione di valore?

    Hai mai pensato che qualcuno potrebbe trovare l'url diretto?

    Hai mai pensato di studiare un po il php?


    ps: quel codice andrà a modificare la query se eseguita senza controlli di sicurezza non centra nulla in questo caso dato che non c'è nemmeno l'ombra di una query

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    129
    la tua variabile "$passw" non è altro che una stringa di testo, definita tramite il form che può contenere qualsiasi cosa che mai verrà interpretata.
    PHP la concepisce come un ammasso di caratteri (nessuno mi uccida per questa brutale definizione! ) e se ne sbatte del senso che questi possono avere.

    L'sql injection è tutt'altro caso.
    Si tratta di una variabile, non controllata per il suo contenuto, che in un certo punto di una query la interrompe e la trasforma in tutt'altro intervenendo quindi sull'SQL. (non a caso il nome "sql injection")

    Codice PHP:
    $MySql =  "SELECT nome FROM tbl_persone ";
    $MySql .= "WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."'";
    $Result mysql_query($MySql);
    $rs mysql_fetch_array($Result);
     if (!
    $rs) {
        
    //accedi
     

    Questo è codice ampiamente vulnerabile perchè in base a cosa scrive l'utente nei due campi (username e password) la query assume una forma o l'altra.

    Se scrivessi ad esempio come password quanto segue, probabilmente accederei comunque.
    codice:
    ' OR password != ''
    Resta però il fatto che sia php, sia chi programma, sia chi gestisce i server, a questi aspetti ci stanno sempre molto attenti. PHP ad esempio (salvo impostazioni contrarie sul server), quando vede un apostrofo lo trasforma sempre in \' così da inibirne la pericolosità ed evitare questi casi.

    Un saluto,
    Marco

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Originariamente inviato da galamarco
    la tua variabile "$passw" non è altro che una stringa di testo, definita tramite il form che può contenere qualsiasi cosa che mai verrà interpretata.
    PHP la concepisce come un ammasso di caratteri (nessuno mi uccida per questa brutale definizione! ) e se ne sbatte del senso che questi possono avere.

    L'sql injection è tutt'altro caso.
    Si tratta di una variabile, non controllata per il suo contenuto, che in un certo punto di una query la interrompe e la trasforma in tutt'altro intervenendo quindi sull'SQL. (non a caso il nome "sql injection")

    Codice PHP:
    $MySql =  "SELECT nome FROM tbl_persone ";
    $MySql .= "WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."'";
    $Result mysql_query($MySql);
    $rs mysql_fetch_array($Result);
     if (!
    $rs) {
        
    //accedi
     

    Questo è codice ampiamente vulnerabile perchè in base a cosa scrive l'utente nei due campi (username e password) la query assume una forma o l'altra.

    Se scrivessi ad esempio come password quanto segue, probabilmente accederei comunque.
    codice:
    ' OR password != ''
    Resta però il fatto che sia php, sia chi programma, sia chi gestisce i server, a questi aspetti ci stanno sempre molto attenti. PHP ad esempio (salvo impostazioni contrarie sul server), quando vede un apostrofo lo trasforma sempre in \' così da inibirne la pericolosità ed evitare questi casi.

    Un saluto,
    Marco

    Ho capito, in pratica quello che io inserisco tramite il campo di testo sarà interpretato sempre e soltanto come una stringa e non come un frammento di codice... giusto?
    Quindi un ipotetico form di login così banalmente costruito può essere attaccato solo tramite bruteforce?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Originariamente inviato da RoTeam


    Che centra la sintassi per l'sql injection con una banale condizione di valore?

    Hai mai pensato che qualcuno potrebbe trovare l'url diretto?

    Hai mai pensato di studiare un po il php?


    ps: quel codice andrà a modificare la query se eseguita senza controlli di sicurezza non centra nulla in questo caso dato che non c'è nemmeno l'ombra di una query

    Chi ha mai parlato di query?
    Ho postato un codice di esempio... cosa c'entra l'url diretto? Cosa mi vieta di aprire una sessione o impostare dei cookie dopo la verifica della password? Conosci il significato della parola "esempio"?
    Hai mai pensato di fartene 3/4 dei tuoi se non hai nulla di costruttivo da aggiungere o scrivi per fare numero?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da sitodue
    Chi ha mai parlato di query?
    Diciamo che è un po' ciò che si fa con l'sql-injection ma senza sql...
    Ti sei confuso fra la composizione di una query e la lettura di una stringa, quindi ti ho detto dove poteva essere vulnerabile il codice

    Originariamente inviato da sitodue
    Ho postato un codice di esempio... cosa c'entra l'url diretto? Cosa mi vieta di aprire una sessione o impostare dei cookie dopo la verifica della password? Conosci il significato della parola "esempio"?
    A beh io ti ho fatto presente l'url dato che tu in questo codice anche se per esempio autentichi con solamente un redirect senza uso di sessioni o cookie

    Originariamente inviato da sitodue
    Hai mai pensato di fartene 3/4 dei tuoi se non hai nulla di costruttivo da aggiungere o scrivi per fare numero?
    Se ti ha dato noia la facepalm bastava dirlo editavo, se poi consigliarti di ripassare il php vuol dire farsi gli affari degli altri non so più cosa pensare

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    pace

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da sitodue
    pace

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.