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?? ]
Printable View
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?? ]
Questo non è uno script. Non fa nulla.
Ciao!
va bè scusa, la query.
di per se inviando il tutto
tramite form, e prendendo i dati
come post, si può bucare?
Dovresti postare tutto lo script, con gli eventuali controlli, ecc.
Ciao!
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 è 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();
}
?>
Ok, ho visto "abbastanza".
http://it.php.net/manual/it/function...ape-string.php
Ciao!
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.
binarysun me la scriveresti una Sql Injenction per capire che fa??
magari basata su questa pagina, così studio una difesa per la
stessa...
Qua http://it.wikipedia.org/wiki/SQL_injection
C'è la spiegazione ed esempio
non funziona la SQL INJ...
Prima di eseguirla prova a fare una stampa(echo) della query.
Logicamente dall'esempio del sito devi sostituire "pippo" con un utente esistente.
è 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
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.
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...