elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 17:42  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  SQL Injection
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: SQL Injection  (Leído 6,061 veces)
Rentero
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.163


La paciencia es la madre de la ciencia.


Ver Perfil
Re: SQL Injection
« Respuesta #15 en: 18 Abril 2006, 23:48 »

Claro. Es que no hay un metodo estandar para que una pagina sea segura...depende del programador, es él el que debe pensar cuales son los posibles fallos que pueden comprometer la seguridad de su sitio.

Aquí solo podemos dar pequeños "consejos" o nociones básicas para salir adelante :S

Que era lo otro...ahmm, las expresiones regulares.
Pues si. Para muchos casos son muy útiles y es interesante familiarizarse con ellas.

Como ya he dicho antes, aqui dejo un buen texto para comenzar a usarlas desde cero.
http://www.ignside.net/man/php/regex.php

Y una vez que se domina eso...también es interesante aprender un poco más y dar el salto(no muy grande :P) a otras que usan funciones como preg_match(), preg_replace, etc.
Esto son expresiones regulares compatibles con Perl :)
http://www.php.net/manual/es/ref.pcre.php

Saludos ;)
En línea

Firmado.
kfault

Desconectado Desconectado

Mensajes: 88



Ver Perfil
Re: SQL Injection
« Respuesta #16 en: 19 Abril 2006, 00:03 »

Gracias de nuevo. :)
En línea
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: SQL Injection
« Respuesta #17 en: 19 Abril 2006, 02:06 »

Pues yo uso esta función de fabricación casera:
Código:
<?php
function limpieza1($valor)
{
$valor = str_replace('"',"//////",$valor);
$valor = str_replace("'","//////",$valor);
$valor = str_replace("@","//////",$valor);
$valor = str_replace("or","//////",$valor);
$valor = str_replace("UNION","//////",$valor);
$valor = str_replace("SELECT","//////",$valor);
$valor = str_replace("%2527","//////",$valor);
$valor = str_replace("%2725","//////",$valor);
$valor = str_replace("%20","//////",$valor);
$valor = str_replace("%27","/////",$valor);
$valor = str_replace("-99","////",$valor);
$valor = str_replace("--","////",$valor);
$valor = str_replace("*/","////",$valor);
$valor = str_replace("null","///////",$valor);
$valor = str_replace("*","///////",$valor);
return $valor;
}
?>
Saludos ::)
xD!
ni por donde empezar a decirte las maneras que hay de saltarse eso..

apenas cree un script que detiene gran parte de los bugs nivel web, y si no, hace muy muy dificil su explotación, pero no se si conviene que lo ponga, digo, si alguien se entera que lo usas podria con mucho esfuerzo, crear alguna forma de saltarselo..

lo mejor es tener register_globals off y magic_gpc on.
ah y no se que hace esto aqui:
Código:
$valor = str_replace("%2725","//////",$valor);
remplazas esto:
Código:
'%
xD!!

Saludos!!
En línea

kfault

Desconectado Desconectado

Mensajes: 88



Ver Perfil
Re: SQL Injection
« Respuesta #18 en: 19 Abril 2006, 16:27 »

SirDarckCat me podrias mandar tu script por MP? Solo para estudiarlo y ver como se pueden hacer mis aplicaciones mas seguras. Haber si puedes, gracias y un saludo.
En línea
sikik


Desconectado Desconectado

Mensajes: 664


Jo sóc jo i la meva circumstància.


Ver Perfil
Re: SQL Injection
« Respuesta #19 en: 19 Abril 2006, 18:52 »

SirDarckCat con este code aun se podria poner a la url una doble comilla con un %22 no?
En línea

"Social Engineer -> Because there is no patch for human stupidity".
"Però qui s'ha inclinat sobre l'abisme, qui ha vist, patirà per sempre la temptació de tornar un altre cop a aquest punt negre en el qual les tenebres il·luminen(...)"
Warning: shell_exec() has been disabled for security reasons at line 274.
vimpher

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: SQL Injection
« Respuesta #20 en: 22 Junio 2006, 04:43 »

Pues voy a abrir una web y estoy haciendo muchas cosas en php y mysql entre ellas un sistema de miembros. Ahora, tengo una duda.
En el codigo que hice para loguearte hice esto:

Código:
<?php

include("connect.php");

if (isset($_POST['user']))
{
  $user = $_POST['user'];
  $pass = $_POST['pass'];
 
  if ($user == NULL || $pass == NULL)
  {
    echo "Faltan datos en el formulario.";
  }
 
  $pass_enc = md5($pass);
 
  $query = "SELECT * FROM users WHERE user = '$user' AND pass = '$pass_enc'";
  $result = mysql_query($query);
  $count = mysql_num_rows($result);
 
  if ($count > 0)
  {
    echo "Logged in.<br />";
    session_start();
   
    $_SESSION['s_user'] = $user;
    $_SESSION['auth'] = true;
   
    header("Location: index.php");
  }
  else
  {
    echo "Usario/Password Incorrecto.";
    die();
  }
}

?>

Bueno, segun lo que he leido de SQL Injection (quiero hacer mis aplicaciones seguras) la manera en que programe esto es vulnerable a algo como  a' or 'a'='a  creo yo que eso deberia de funcionar pero no funciona, siempre me da el mensaje de Usuario/Password Incorrecto. Quisiera saber si realmente es vulnerable y como lo puedo arreglar pues no quiero llevarme sorpresas despues cuando la web este en el servidor.

Muchas Gracias y haber si alguien me puede ayudar.

P.D. Olvide mencionar que este archivo es login2.php, en login.php tengo una forma con la action puesta en login2.php. Me refiero a que esta pagina procesa la informacion mandada por la forma.
En línea
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: SQL Injection
« Respuesta #21 en: 22 Junio 2006, 05:22 »

Pues eres vulnerable a inyeccion SQL en el usuario

intenta poner esto en user:

' OR ''='' /*

Saludos!!
En línea

R2d2_

Desconectado Desconectado

Mensajes: 75



Ver Perfil
Re: SQL Injection
« Respuesta #22 en: 23 Junio 2006, 00:43 »

y como se detecta cuando una página es vulnerable a SQLinjection? porque ya manejo la injeccion bien pero no encuentro páginas vulnerables... Le paso el Acunetix y no me dice nada :S

Alguien conoce una web vulnerable ? que me mande un PM PORFAVOR !

Quiero aprender!
En línea

Crack_X
Anti-War
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.320


Peace & Love


Ver Perfil WWW
Re: SQL Injection
« Respuesta #23 en: 23 Junio 2006, 02:00 »

Modo simple: Intentas poner cosas extrañas como  ' , ' OR , ' AND , " , " OR , " AND, ' UNION SELECT a FROM b , " UNION SELECT a FROM b

El problema es que aveces aunque aiga un Sql Injection no te devuelve error. A esto se le llama Blind Sql Injection y es mas dificil tienes que llevarte de que si funciono o no funciono.

En www.bright-shadows.net hay 2 retos de Sql Injection bastante buenos.

Y claro no solamente puede haber un Sql Injection por medio de una variable, tambien podria ser por un Refferer o User-Agent o quizas la cookie.
En línea

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone
Hans el Topo


Desconectado Desconectado

Mensajes: 1.748


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: SQL Injection
« Respuesta #24 en: 30 Junio 2006, 00:17 »

Pues yo uso esta función de fabricación casera:
Código:
<?php
function limpieza1($valor)
{
$valor = str_replace('"',"//////",$valor);
$valor = str_replace("'","//////",$valor);
$valor = str_replace("@","//////",$valor);
$valor = str_replace("or","//////",$valor);
$valor = str_replace("UNION","//////",$valor);
$valor = str_replace("SELECT","//////",$valor);
$valor = str_replace("%2527","//////",$valor);
$valor = str_replace("%2725","//////",$valor);
$valor = str_replace("%20","//////",$valor);
$valor = str_replace("%27","/////",$valor);
$valor = str_replace("-99","////",$valor);
$valor = str_replace("--","////",$valor);
$valor = str_replace("*/","////",$valor);
$valor = str_replace("null","///////",$valor);
$valor = str_replace("*","///////",$valor);
return $valor;
}
?>
Saludos ::)

yo lo que hago es en vez de reemplazar cosas... tengo una cadena con los caracteres no permitidos... olos permitidos, si encuentro uno nopermitido pues terminas el proceso antes de enviar nada y listo...

aligual es muy burro pero es lo mas fiable que se me ocurrio...
define("CADENA_Y_NUM","0123456789_abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ");
//caracteres , nº permitidos y el espacio
define("CADENA_y_NUM_ESPACIO"," _áéíóúabcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ");
//letras y símbolos permitidos
define("CADENA","_abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ");

compruebo cada dato que al que el usuario tiene acceso antes de enviarlo  a la base de datos ... si alguien me dice como saltarse la seguridad utilizando solamente esos caracteres... le estaría muy agradecido...cD
« Última modificación: 5 Julio 2006, 01:52 por Hans el Topo » En línea

 
juanpaval17

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: SQL Injection
« Respuesta #25 en: 4 Agosto 2006, 00:40 »

yo uso esta función

Código:
function quitar($texto) {

$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
$texto=strip_tags($texto);
$texto = str_replace(chr(160),'',$texto) ; # Elimina espacios que no pueden ser borrados por trim()
$texto = stripslashes($texto);
$texto = addslashes($texto);
return $texto ;
   }

sería suficiente este codigo o se puede combinar con las nombradas en este topic?



En línea
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: SQL Injection
« Respuesta #26 en: 4 Agosto 2006, 02:17 »

juanpaval.

que redundate funcion tienes :P

addslashes se puede saltar dependiendo del tipo de caracteres que tenga el campo de la BD.

no entiendo paraque quitas y vuelves a poner las slashes.. mejor usa mysql_real_escape.. es un poco mas segura.. y tiene boundary exception.

si usas urlencode(); controlas cualquier tipo de inyección.. desde RCI, SSIi y XSS, hasta SQLi.

aunque tambien puedes usar htmlentities, y despues urlencode.. asi evitas por completo estos bugs en plataformas mas elaboradas.

y para mas seguridad puedes usar base64.. y para passwords md5/sha1.

Saludos!!
En línea

retontin

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: SQL Injection
« Respuesta #27 en: 12 Agosto 2006, 16:49 »

Para un novato,

Alguien puede explicarme donde se coloca la función y como se llama a la misma?.

Le estaré muy agradecido, soy novísimo en esto pero algo de maña me doy; quizas con un pequeño indicio me arreglaré.

Gracias.
En línea
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: SQL Injection
« Respuesta #28 en: 13 Agosto 2006, 04:16 »

$varlimpia = urlencode(htmlentities($varsucia));

eso deberia de limpiar de inyecciones.

Saludos!!
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines