Hola a Todos!!
Me dieron un login de acceso a un sistema el cual tiene distintos niveles de acceso..el codigo es el siguiente:
<?phpif(isset($_SESSION['miUsuario'])){include_once"menuUser.php";}else{ //me fijo si estan definidos nombre y clave if(!isset($_POST['nombre'])||!isset($_POST['clave'])){ include_once"login.php"; }else{ //Reviso los datos q vienen del formulario x POST if ($_POST['nombre']!="" || $_POST['clave']!=""){ $user= $_POST['nombre']; $pass=$_POST['clave']; $sql = "SELECT * FROM usuarios WHERE username='$user' AND password='$pass' "; include_once("conexion.php"); $qry = mysql_query($sql); } else{ //si hay error de contraseña Informo y vuelve al formulario Login echo" <h3 class='letras_login'> Contaseña Incorrecta </h3> <br />"; include_once"login.php"; //Si tienen contenido lo comparo con la Base de Datos $sql="select * from usuarios where username='$_POST[nombre]'and estado='activo'"; include_once"conexion.php"; $rs=mysql_query($sql); //chequeo si hay un error en $rs (Consulta SQL) if(!$rs){echo "Error en la Consulta SQL";} else{ //si es Mayor a cero hay un usuario if(mysql_num_rows($rs)>0){ $passFormulario=$_POST['clave']; //guardo la contraseña q viene del formulario $passBD=mysql_result($rs,0,2); //guardo la contraseña q esta en la BD $idUsuario=mysql_result($rs,0,0); //guardo el ID del usuario q esta la BD $nivelUsuario=mysql_result($rs,0,3); //guardo el nivel q esta en la BD //$avatar=mysql_result($rs,0,8); //guardo el nivel q esta en la BD //Comparo las pass, si coinciden INICIO SESION if($passFormulario==$passBD){ //creo la variable de sesion : usuario y su Nivel $_SESSION['miUsuario']=$_POST['nombre']; $_SESSION['miNivel']=$nivelUsuario; $_SESSION['idCliente']=$idUsuario; //$_SESSION['miAvatar']=$avatar; /* $miLog1 = new log('1',$idUsuario,'0'); $miLog1->insertarlog (); */ mysql_query($sql) or die ("Error en la inserción!"); //incluyo el Modulo q tiene el Menu de Usuario include_once"menuUser.php"; }else{ //si hay error de contraseña Informo y vuelve al formulario Login echo" <h3 class='letras_login'> Contaseña Incorrecta </h3> <br />"; include_once"login.php"; } }else{ //si No hay usuarios con ese nick Informo y vuelve al formulario Login echo"<h3 class='letras_login'> Usuario y/o Contaseña Incorrecto o inhabilitado </h3> <br />"; include_once"login.php"; } } } else{ //Si el form esta vacio Muestro el Login include_once"login.php"; } }}?>
En este codigo necesito aplicar ataques de INYECTION,XSS Y CSRF (asumo que quien me brinde su ayuda sabe de que estoy hablando), nos dijeron que podemos hacerle modificaciones al codigo para hacer funcionar nuestros ataques pero probe de varias maneras y no logro resolverlo...
Agradezcco desde ya su colaboracion!!
Saludos!!
Aclaracion: Los include no modifican nada la ideas es trabajar sobre los if, esos archivos son mas referidos al diseño del sitio
Estuve probando la alternativa que me sugeriste al igual que la mas comun ' OR '1=1
y de todas maneras me figura contraseña incorrecta y si ingreso esa linea en el usuario me aparece error en consulta sql.. Y los DROP y ALTER tampoco me funcionan.. :(
Por las dudas vuelvo a pasar el codigo porque creo que el anterior le habia hecho algunas modificaciones y no se si funciona correctamente(en realidad creo que le falta un if)
<?php //session_start(); //include_once("claseLog.php");//Si existe una sesion de usuario Lo muestroif(isset($_SESSION['miUsuario'])){include_once"menuUser.php";}else{ //me fijo si estan definidos nombre y clave if(!isset($_POST['nombre'])||!isset($_POST['clave'])){ include_once"login.php"; }else{ //Reviso los datos q vienen del formulario x POST if ($_POST['nombre']!="" || $_POST['clave']!=""){ //Si tienen contenido lo comparo con la Base de Datos $sql="select * from usuarios where username='$_POST[nombre]'and estado='activo'"; include_once"conexion.php"; $rs=mysql_query($sql); //chequeo si hay un error en $rs (Consulta SQL) if(!$rs){echo "Error en la Consulta SQL";} else{ //si es Mayor a cero hay un usuario if(mysql_num_rows($rs)>0){ $passFormulario=$_POST['clave']; //guardo la contraseña q viene del formulario $passBD=mysql_result($rs,0,2); //guardo la contraseña q esta en la BD $idUsuario=mysql_result($rs,0,0); //guardo el ID del usuario q esta la BD $nivelUsuario=mysql_result($rs,0,3); //guardo el nivel q esta en la BD //$avatar=mysql_result($rs,0,8); //guardo el nivel q esta en la BD //Comparo las pass, si coinciden INICIO SESION if($passFormulario==$passBD){ //creo la variable de sesion : usuario y su Nivel $_SESSION['miUsuario']=$_POST['nombre']; $_SESSION['miNivel']=$nivelUsuario; $_SESSION['idCliente']=$idUsuario; //$_SESSION['miAvatar']=$avatar; /* $miLog1 = new log('1',$idUsuario,'0'); $miLog1->insertarlog (); */ mysql_query($sql) or die ("Error en la inserción!"); //incluyo el Modulo q tiene el Menu de Usuario include_once"menuUser.php"; }else{ //si hay error de contraseña Informo y vuelve al formulario Login echo" <h3 class='letras_login'> Contaseña Incorrecta </h3> <br />"; include_once"login.php"; } }else{ //si No hay usuarios con ese nick Informo y vuelve al formulario Login echo"<h3 class='letras_login'> Usuario y/o Contaseña Incorrecto o inhabilitado </h3> <br />"; include_once"login.php"; } } }else{ //Si el form esta vacio Muestro el Login include_once"login.php"; } }}?>