Disculpame, en el ejemplo de
<?php
$us=$_POST['usuario'];
$pas=$_POST['pass'];
if($_GET['usuario'] || $_GET['pass']){
die("Hack Attempt");
}
/*Conectamos*/
$conexion = mysql_connect("localhost", "root", "123qwe");
mysql_select_db("mysql", $conexion);
$sql="SELECT PASSWORD FROM USUARIO WHERE USUARIO.NOMBRE = '$us'";
echo "$sql<br>";
$resp = mysql_query($sql, $conexion) or die(mysql_error());
if($fila = mysql_fetch_array($resp)){
if($fila['PASSWORD']==$pas){
echo "Inicio de sesión exitoso"; // Esto fue modificado
}else{
echo "el password ".$pas." es incorrecto";
}
} //' UNION SELECT MIN(Password),2,3,4,5 FROM USUARIO WHERE NOMBRE = 'zanahoria
?>
Hay algo que no entiendo la consulta quedaria modificada como:
SELECT PASSWORD FROM USUARIO WHERE USUARIO.NOMBRE = '' UNION SELECT MIN(Password) FROM USUARIO WHERE NOMBRE = ''
,si en el campo usuario ponemos como vos dijiste:
' UNION SELECT MIN(Password) FROM USUARIO WHERE NOMBRE = '
Y efectivamente, funciona, cree un localhost para probarlo, (Aclaro que estos son mis primeros pasos en SQL Injection), ahora lo que no entiendo es porque funciona, yo corrí la consulta en el Mysql Query Browser y me tira un campo en NULL, ¿Esto quiere decir que si comparamos cualquier cosa contra una variable en NULL nos da verdadero?.
Yo se que mysql_fetch_array se usa para transformar el resultado de una consulta en un arreglo y poder recorrerlo de manera iterativa, ¿Pero esto quiere decir que no pasa nada cuando le decimos que nos devuelva el valor del campo PASSWORD?.
Disculpen, es que esta linea en particular me confunde mucho:
if($fila = mysql_fetch_array($resp)){
if($fila['PASSWORD']==$pas){
Muchas gracias por detenerse a leer, Saludos!