Tutorial de Inyección SQL (SQL Injection)

Iniciado por sirdarckcat, 10 Diciembre 2005, 04:34 AM

0 Miembros y 1 Visitante están viendo este tema.

sirdarckcat

Si marcela, es para que practiques una inyección SQL..

SeniorX

#11
Citar<?php
// Por reydelmundo11
// quitar el comentario de la linea siguiente

// magic_quotes_gpc = Off;
?>
Nose como funciona eso :S.... pero para saber si las magic quotes estan activadas basta con hacer
Citar
<?php
echo  get_magic_quotes_gpc(); //te dice 0 si esta desactivadas y 1 adivinen cuando XD
?>

Muy bueno el tutorial, ahora mismo estoy haciendo la practica con hackme.php.
Solo me resta una pregunta: Si tiene magic quotes activadas, no se puede hacer NADA? he visto maneras de saltar eso haciendo
Citars%') UNION SELECT
Nunca he practicado sql inyection (buscando yo) pero se como prevenirme XD, y como recomendacion diria que es bueno filtrar TODOS los datos que el usuario pueda escribir... y con eso quedariamos limpios.

Ahhh y se me olvidaba,en form action = login.php, :P no existe, seria mejor poner php_self, pero eso no fue lo hice yo.

Ojalá que no te moleste (y bueno si te molesta.... lo borras XD)

Me tome la libertad de hacer el ejercicio mas amigable men :D, por lo tanto pongo el codigo :):

hackme.php
<?php
// Por reydelmundo11
$resp get_magic_quotes_gpc();
if (
$resp == ) {
echo "Ok ok... tenemos serios problemas de seguridad";
} else {
echo "Todo bien :)";
}
echo 
'<body>
<form action=login.php method=post>
<p align="center"><b>Login:</b><input type=text name=login value="ADMIN">&nbsp;
<p align="center"><b>Password del admin:</b><input type=text name=pass>&nbsp;
</p>
<p align="center">
<input type=submit value="Entrar"></p>
</form>
</body>'
;
?>



login.php

<?php
// ESTO ES PARA DESACTIVAR EL EFECTO DE LAS MAGIC QUOTES
$login str_replace '\\\'''\''$login );
$pass str_replace '\\\'''\''$pass );
require (
"../../config.inc.php");
conectar();
$entrada mysql_query("SELECT usuario FROM usuarios Where usuario='$login' and password='$pass'",$conn) or die(mysql_error());
  if(
mysql_num_rows($entrada)=='0')
  {
echo 
'Error en el login, el password '.$pass.' no corresponde a '.$login;
  }else{

echo 
'Usted se nos logeo con éxito <br> Bienvenido';
}
?>


Si sabes sql se hara muy facil resolver el ejercicio :), ah y recuerden que yo no hice el ejercicio, sino Sirdarckcat.

Chau
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}

Precaución: La programacion puede producir adiccion

programatrix

Y con esto te puedes cargar las mysql inyection:
Citar@set_magic_quotes_runtime(0);
Además de con esto:
function limpieza1($valor)
{
$valor = str_replace($valor,'"',"//////");
$valor = str_replace($valor,"'","//////");
$valor = str_replace($valor,"@","//////");
$valor = str_replace($valor,"or","//////");
$valor = str_replace($valor,"UNION","//////");
$valor = str_replace($valor,"SELECT","//////");
$valor = str_replace($valor,"%2527","//////");
$valor = str_replace($valor,"%2725","//////");
$valor = str_replace($valor,"%20","//////");
return $valor;
}

Saludos  ::)

sirdarckcat

Cita de: Rey11 en 15 Enero 2006, 22:29 PM
Y con esto te puedes cargar las mysql inyection:
Citar@set_magic_quotes_runtime(0);
Además de con esto:
function limpieza1($valor)
{
$valor = str_replace($valor,'"',"//////");
$valor = str_replace($valor,"'","//////");
$valor = str_replace($valor,"@","//////");
$valor = str_replace($valor,"or","//////");
$valor = str_replace($valor,"UNION","//////");
$valor = str_replace($valor,"SELECT","//////");
$valor = str_replace($valor,"%2527","//////");
$valor = str_replace($valor,"%2725","//////");
$valor = str_replace($valor,"%20","//////");
return $valor;
}

Saludos ::)
xD
http://mx2.php.net/str_replace
la sintaxis que usas esta completamente mal.

seria algo asi:
$valor = str_replace("cosa-mala","//////",$valor);

::) xD

Saludos!!

programatrix

Pues yo lo uso de la otra manera y no me saca fallo....
Saludos  ::)

sirdarckcat

obvio no va a sacar fallo.. amenos que quieras buscar en:
///////
si hay una comilla xD esto no sirve de nada.

checa la liga de php.net.

antes de ponerlo lo hubieras probado en local jeje.

Saludos!!

programatrix

Ya lo corregí, fue un error mío por no releer la documentacion  ;D

Abd al krim

Wenas.....

Yo he probado ha hacer una injeccion sobre una pagina que tengo en mi pc y no me funciona. Cada vez que meto en la casilla password algo del tipo' or ''='       pinto la consulta por pantalla y me devuelve lo siguiente
SELECT * FROM prueba_mary WHERE nombre = '' AND apellidos='\' or\'\'=\''

me esta escapando los caracteres ' pq ocurre esto?????? :shocked:

gracias

Abd al krim


cloferba

donde debo introducir los datos de consulta?
en muchos ejemplos dan: en nombre poner ** y en apellido **.

donde encuentro esos campos?