Cuantas veces no hemos visto un log-in que no es vulnerable a sql injection pero queremos entrar a como de lugar, una idea sería brute-force pero... no siempre hay una respuesta...
Ahora les voy a mostrar un error que algunos programadores aun cometen, la idea es que cuando el usuario y la pass coninciden hacen que una variable X cambie a true, ahora la preguntasa es que pasaría si nosotros hicieramos que la variable a taves de un GET se ejecutara?
Un Ejemplo (No es Real! Es un tipo Pseudo):
<?php
if ($user == 'hola' AND $pass == 'pass'){
$access = $_GET['access'];
$access = 1;
}
if ($access == '1') {
echo 'Access Granted.'; }
else {
echo 'Access Denied.';
}
?>
Como ven en el caso de que access sea true te deja entrar... yo me pregunto que pasaría si nosotros por ejemplo...
http://www.bugged.com/admin/login.phpahi ponemos un usuario para bypass con sql injection y no funciona entonces nos regresa a la misma página... pero nos mostrará algo como lo siguiente:
http://www.bugged.com/admin/login.php?user=&pass=&access=0como ejemplo... ahora si nosotros en ves de esto pusieramos...
http://www.bugged.com/admin/login.php?access=1ahi tambiaríamos a true la variable access ahora como la mayoría de personas no ponen una seguridad a sus paneles de control solo faltaría ir a
http://www.bugged.com/admin/Ahora para reparar este error no hay mucho que hacer en vez de hacer dos ifs distintos uno preguntando asi: si usuario y pass son correctos access = 1 no cojerlo por get en ningun momento por post tampoco sino como session setearlo como session...
Otra cosa deben de asegurar que pida la sessión en el momento de hacer que access cambie a 1...
if(isset($_SESSION['access']))
Saludos,
Dedalo