Novedades Desafíos Papers y H-Zine Proyectos Foro
foros de discusión

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Loguearse con php y mysql, extraer datos user y password y validarlos
paridoxmama
post Nov 3 2008, 09:48 PM
Post #1


Recién llegado
*


Group: Hackerss Member
Posts: 8
Joined: 2-November 07
Member No.: 3,513



Bueno la cosa es la siguiente si encripto en md5 hash1 .mm en una tabla que yo elabore jala mi login pero cuando intento entrar con la tabla User que se encuentra en la BD mysql no me deja es posible entrar puesto el el PHPMYADMIN lo hace pero eh estado revisando como hacerlo pero la verdad no doy aun espero me puedan apoyar para crear los usuario simplemente uso el
CODE
GRANT ALL PRIVILEGES ON *.* TO xxx IDENTIFIED by 'password';

Asi es como cree un usuario llamado xxx entonces quiero acceder con el y si accedo por medio del usuario si entra pero cuando valido la contraseña pues no jala la verdad desconosco como encripta el password tal vez si lo encripto en el mismo tipo asi lo podria comparar pero no se q tiepo sea ya intente guardando el password en md5 y comparandolo con md5 igual hash1 pero la cosa es que me manda distintas encriptaciones con los mismos caracteres

este es mi codigo para acceder a la base mysql tabla user
CODE
<?
if(isset($_POST['logueado'])){
include('conexion.php');

$usr=$_POST['usr'];
$psw=$_POST['psw'];

$reg=mysql_query("SELECT user,password FROM user WHERE password='$psw'") or die(mysql_error());

$reg=mysql_fetch_array($reg) or die(mysql_error());
if($reg['password']==$psw){
header("location: index_admin.php");
}
else
{
echo "Error";
}
}
?>

<form name="form1" method="post" action="<? $SERVER['PHP_SELF']?>?id=telogueaste">

  <table width="200" border="1">
    <tr>
      <td>Usuario</td>
      <td><input type="text" name="usr"></td>
    </tr>
    <tr>
      <td>Contrase&ntilde;a</td>
      <td><input type="text" name="psw"></td>
    </tr>
    <tr>
      <td><label></label></td>
      <td><input type="submit" name="logueado" value="Login"></td>
    </tr>
  </table>
  
</form>


This post has been edited by paridoxmama: Nov 3 2008, 10:06 PM
Go to the top of the page
 
+Quote Post
Farid
post Nov 4 2008, 02:43 AM
Post #2


Farid
Group Icon


Group: Root Admin
Posts: 1,490
Joined: 1-June 07
From: Argentina
Member No.: 2,479



QUOTE(paridoxmama @ Nov 3 2008, 09:48 PM) *
tal vez si lo encripto en el mismo tipo asi lo podria comparar pero no se q tiepo sea ya intente guardando el password en md5 y comparandolo con md5 igual hash1 pero la cosa es que me manda distintas encriptaciones con los mismos caracteres

Eso es lo que debes hacer, encriptar el hash y compararlo con el de la db.
obtenes el hash con la funcion md5():

[...]$reg="SELECT user,password FROM user WHERE usr='$usr'
AND psw='".md5($_POST['psw'])."'";
$reg=mysql_query($reg);
[...]


--------------------
QUOTE
Much like a baby is comforted by the rhythmic heartbeat and protective arms of a mother, so too am I comforted by monitors, logs, throughput graphs, scrolling shells; the dull background thrum of my infrastructure, all speaking the steady pulse of the network.
Go to the top of the page
 
+Quote Post
pelu
post Nov 4 2008, 05:22 AM
Post #3


Talibán del software libre.
Group Icon


Group: Colaborador
Posts: 633
Joined: 21-April 06
From: La concha de la lora
Member No.: 164



si o utiliza la funcion MD5 del propio MySQLa la hora de generar el hash y a la hora de comparar, con eso sabrás que utilizas exactamente la misma funcion para todos los casos.

saludos


--------------------
Go to the top of the page
 
+Quote Post
paridoxmama
post Nov 4 2008, 02:03 PM
Post #4


Recién llegado
*


Group: Hackerss Member
Posts: 8
Joined: 2-November 07
Member No.: 3,513



Hola de nuevo mi problema radica basicamente en esto :

md5 world /*Aqui encripte como ejemplo la palabra world*/
7d793037a0760186574b0282f2f435e7 //<-- la genero md5('world')

/*-----
Cuando almaceno a la base de datos y recuperar la contraseña
------*/

*4A319F60B7BCB883DF4B7CEE9139768A6BA626F0 //<-- Esto es lo que me despliega mysql

/*
Eh ahi el problema de por que no puedo comparar las cadenas y por tanto no me queda el login
*/
Alguien sabe como solucionar esto por que ya intente con encriptar hash1('world')
pero igual en la BD me almacena otro valor se me hace que encripta lo encriptado o no se no me viene a la idea como hacer la comparacion alguien puede auxiliarme?

Anexo el codigo de insertar
CODE
<?
if(isset($_POST['agregalo'])) {

include("conexion.php");
//$conex= new conexion();

$nom=$_POST['nombre'];
$psw=md5($_POST['psw']);
$priv=$_POST['usr'];
$priv=explode(",",$priv);
echo $psw;
if($priv[0]=='ALL')
{
mysql_query("GRANT $priv[0] PRIVILEGES ON *.* TO $nom@localhost IDENTIFIED by '$psw'");
}
else if($priv[0]=="SELECT")
{
mysql_query("CREATE USER $nom@localhost IDENTIFIED BY '$psw'");
mysql_query("GRANT $priv[0] ON *.* TO $nom@localhost");
}
else if($priv[0]=="UPDATE")
{
mysql_query("CREATE USER $nom@localhost IDENTIFIED BY '$psw'");
mysql_query("GRANT $priv[0],$priv[1] ON *.* TO $nom@localhost");
}

//echo "<script type=\"text/javascript\">alert(\"Usuario Almacenado Correctamente\");</script>";  
}

?>
<html>
<head>
<title> Nuevo usuario </title>

</head>
<body>

<form action="<?$SERVER['PHP_SELF'];?>?id=almacenado" method="POST" name="admin">
Nombre:<input type="text" name="nombre">
<br>
Contraseña:<input type="password" name="psw">
<br>
Privilegios para el usuario usuario:
<br>
<input type="radio" value="ALL" name="usr">Usuario 1 TODOS<br>
<input type="radio" value="SELECT" name="usr">Usuario 2 SELECCIONAR<br>
<input type="radio" value="UPDATE,DELETE" name="usr">Usuario 3 MODIFICAR Y ELIMINAR<br>
<input type="submit" value="CREAR" name="agregalo">
</form>


</body>
</html>


This post has been edited by paridoxmama: Nov 4 2008, 02:07 PM
Go to the top of the page
 
+Quote Post
Ironic
post Nov 4 2008, 02:06 PM
Post #5


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



justamente...
si tu tienes en un lado una cadena de texto encriptada (hash)

y por el otro lado otra cadena de texto sin encriptar, lo que tienes que hacer es o desencriptar una o encriptar la otra.
Como desencriptar hash no se puede, deberas tener que encriptar la que no se enncuentra encriptada tongue.gif


O sea, encripta la contraseña que puso el usuario, y al hash resultante comparalo con el que se encuentra en la BD


--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
gercat
post Nov 4 2008, 02:09 PM
Post #6


Gatito
Group Icon


Group: Moderador Global
Posts: 1,478
Joined: 21-April 06
From: Catalunya
Member No.: 41



Como dice Pelu:

MD5(str)

Calculates an MD5 128-bit checksum for the string. The value is returned as a binary string of 32 hex digits, or NULL if the argument was NULL. The return value can, for example, be used as a hash key.


mysql> SELECT MD5('testing');
-> 'ae2b1fca515949e5d54fb22b8ed95575'

No digo que tu aplicación este mal, pero con esto te aseguras que lo hará perfectamente.
Cuando se registre le pides a mysql que te encripte la pass con la función MD5, y para loguearse es lo mismo, la pass que te meta la vuelves a encriptar con la función, y comparas.

Saludos


--------------------
No olvides dar un vistazo a la revista de Hackerss :)
H-Zine #1
H-Zine #2
H-Zine #3
H-Zine #4 (Diciembre 2008!!)
Go to the top of the page
 
+Quote Post
paridoxmama
post Nov 4 2008, 06:12 PM
Post #7


Recién llegado
*


Group: Hackerss Member
Posts: 8
Joined: 2-November 07
Member No.: 3,513



Hola de nuevo eh intentado hacer lo siguiente
CODE
mysql_query("GRANT $priv[0] PRIVILEGES ON *.* TO $nom@localhost IDENTIFIED by MD5'$psw'");

y
CODE
mysql_query("GRANT $priv[0] PRIVILEGES ON *.* TO $nom@localhost IDENTIFIED by MD5('$psw')");

tambien
CODE
mysql_query("GRANT $priv[0] PRIVILEGES ON *.* TO $nom@localhost IDENTIFIED by SELECT MD5'$psw'");

pero nada de nada mm no me manda error me dice que lo almaceno pero no me almacena nada sin embargo si lo pongo asi
CODE
mysql_query("GRANT $priv[0] PRIVILEGES ON *.* TO $nom@localhost IDENTIFIED by '$psw'");

si lo almacena ahora la cuestion que me encontre algo mientras leia

grant all privileges on *.* 'loco'@'localhost' identified by 'algo';

ahi me crearia el usuario loco y le daria todos los privilegios bueno todos -1 en fin la cosa no es esa la duda es que vi esto
CODE
IDENTIFIED BY PASSWORD('algo');
y
CODE
IDENTIFIED BY ('algo');


en C dice que para desencriptar PASSWORD('algo') se usa esta funcion make_scrambled_password(); pero la cosa es que
1 uso php y 2 no se si por defecto esto
CODE
IDENTIFIED BY PASSWORD('algo');
y
CODE
IDENTIFIED BY ('algo');

sea lo mismo puesto que yo uso la segunda y php no me deja usar la de PASSWORD bueno si me deja pero no almacena en la tabla :|
CODE
mysql_query("GRANT $priv[0] PRIVILEGES ON *.* TO $nom@localhost IDENTIFIED by PASSWORD('$psw')");


This post has been edited by paridoxmama: Nov 4 2008, 06:15 PM
Go to the top of the page
 
+Quote Post
Ironic
post Nov 4 2008, 06:28 PM
Post #8


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



Mmm ese script no es para validar un acceso...
sino para brindar permiso a un usuario (de la base de datos, no de la aplicacion) sobre tablas, vistas y otros recursos...

http://dev.mysql.com/doc/refman/5.0/es/grant.html

Creo que te estas confundisendo... los usuarios de la bd con los usuarios de la aplicacion...

o no entendi nada del post sino


--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
paridoxmama
post Nov 4 2008, 08:20 PM
Post #9


Recién llegado
*


Group: Hackerss Member
Posts: 8
Joined: 2-November 07
Member No.: 3,513



QUOTE(Ironic @ Nov 4 2008, 06:28 PM) *
Mmm ese script no es para validar un acceso...
sino para brindar permiso a un usuario (de la base de datos, no de la aplicacion) sobre tablas, vistas y otros recursos...

http://dev.mysql.com/doc/refman/5.0/es/grant.html

Creo que te estas confundisendo... los usuarios de la bd con los usuarios de la aplicacion...

o no entendi nada del post sino


Creo que no me di a explicar la cuestion es la siguiente mi aplicacion es crear usuarios en la bd mysql tabla user ya los eh creado y mi aplicacion los crea correctamente la cosa ahora es guardar el password en el campo Password en formato encriptado MD5 para poderlo comparar

La finalidad es acceder a mysql desde mi aplicacion como lo hace una aplicacion ejemplo PHPMYADMIN
vez que tu pones tu usuario y tu pass y te mete eso es lo que quiero hacer que me deje acceder ... espero darme a entender esta vez
Go to the top of the page
 
+Quote Post
Ironic
post Nov 5 2008, 04:27 AM
Post #10


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



Mmm

http://dev.mysql.com/doc/refman/5.0/es/adding-users.html


CODE
shell> mysql --user=root mysql
mysql> INSERT INTO user
    ->     VALUES('localhost','monty',PASSWORD('some_pass'),
    ->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user
    ->     VALUES('%','monty',PASSWORD('some_pass'),
    ->     'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
    ->     Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
    ->     VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;



--------------------
Mi blog: http://www.ironicnet.com
Mi fotolog: http://www.fotolog.com/ironicnet_com

Cualquier cosa: ironic@ironicnet.com
Msn: ironic@ironicnet.com

Registrate en Bux.to y sumate unos dolares mensuales!
No te hace millonario, pero ayuda...

Go to the top of the page
 
+Quote Post
marioly
post Nov 5 2008, 07:32 AM
Post #11


Regia
Group Icon


Group: Root Admin
Posts: 2,007
Joined: 14-April 06
From: Mty, Nuevo Leon
Member No.: 38



Probaste:
CREATE USER pablito IDENTIFIED BY 'algo'
?
&

SELECT * FROM user WHERE User = 'pablito' AND Password = PASSWORD('algo')


--------------------
Go to the top of the page
 
+Quote Post
pelu
post Nov 5 2008, 10:13 AM
Post #12


Talibán del software libre.
Group Icon


Group: Colaborador
Posts: 633
Joined: 21-April 06
From: La concha de la lora
Member No.: 164



Te hemos entendido mal, bueno malentendimientos aparte, has esta select:

CODE
select password('hola'), md5('hola')


verás que no es el mismo algoritmo y te genera diferentes hash

por lo tanto tienes que hacer como te dice marioly:

CODE
SELECT * FROM user WHERE User = 'pablito' AND Password = PASSWORD('algo')


saludos

This post has been edited by pelu: Nov 5 2008, 10:13 AM


--------------------
Go to the top of the page
 
+Quote Post
paridoxmama
post Nov 5 2008, 08:04 PM
Post #13


Recién llegado
*


Group: Hackerss Member
Posts: 8
Joined: 2-November 07
Member No.: 3,513



QUOTE(pelu @ Nov 5 2008, 10:13 AM) *
Te hemos entendido mal, bueno malentendimientos aparte, has esta select:

CODE
select password('hola'), md5('hola')


verás que no es el mismo algoritmo y te genera diferentes hash

por lo tanto tienes que hacer como te dice marioly:

CODE
SELECT * FROM user WHERE User = 'pablito' AND Password = PASSWORD('algo')


saludos

Si comprendo la diferencia entre PASSWORD y MD5 y si asi se haria desde consola y jalaria bien la cuestion es hacerlo desde php"Password = PASSWORD('algo')" Puesto que en php no se como se haga lo de la funcion PASSWORD ya que no encuentro la funcion o no veo como jalarla o de donde jalarla para incluirla en el archivo...es lo unico que me falta para poder sentirme feliz de haber hecho la aplicacion.

This post has been edited by paridoxmama: Nov 5 2008, 08:07 PM
Go to the top of the page
 
+Quote Post
Ironic
post Nov 5 2008, 08:07 PM
Post #14


Adicto a Hackerss
Group Icon


Group: Root Admin
Posts: 1,443
Joined: 7-July 07
From: Buenos Aires, Argentina
Member No.: 2,688



es que no tienes que hacerla "por php", tu desde php solo tienes que armar la query...

seria como

$query = "SELECT * FROM user WHERE User = '$usr' AND Password = PASSWORD('$pwd')";

$mysql_query($query) o algo asi


--------------------