elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
13 Octubre 2008, 12:00  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado (Moderadores: ANELKAOS, zhyzura)
| | |-+  un sql injection se para simplemente borrando espacios en blanco??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: un sql injection se para simplemente borrando espacios en blanco??  (Leído 1135 veces)
tornar

Desconectado Desconectado

Mensajes: 43



Ver Perfil
un sql injection se para simplemente borrando espacios en blanco??
« en: 29 Marzo 2006, 22:40 »

Hola, queria pediros vuestra opinion sobre este tema...imaginaros una aplicacion en la que se pide al usuario login y pass...

La aplicacion lo que hace es un "select campo_password from tabla_usuarios where id_usuario='+login_introducido_por_usuario+' ", luego en funcion de si  existe o no algun registro para el id_usuario introducido pues compara los 2 passwords, el que ha introducido el usuario y el que ha obtenido de la base de datos con la consulta..

Un sql injection que se me ocurre es el siguiente...

introducir en el campo login algo asi...

login =  ' or pass='password que pensemos que pueda existir
pass = password que hemos puesto arriba

de esta forma conseguimos entrar a la aplicacion con acertar un password de kien sea, no tenemos que preocuparnos de poner usuario ni nada, si en la base de datos existe un password como el que hemos puesto, ya estamos dentro...

Ahora bien, he comprobado que simplemente cogiendo la cadena de entrada y quitando todos los espacios en blanco, se acaba el problema del sql injection... existe alguna forma de poder sequir usando sql injection si te kitan los espacios en blanco de todo lo que introduces?

Gracias.
En línea
Crack_X
Anti-War
Colaborador

Desconectado Desconectado

Mensajes: 2.324


Peace & Love


Ver Perfil WWW
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #1 en: 29 Marzo 2006, 22:58 »

No estoy seguro pero quizas en ves de usar un espacio en blanco pongas "+" quizas se salte pero no estoy seguro.

Mejor limita a que solamente sea alfanumerico los valores.
En línea

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


Yasser Has Things To Say
WarZone
Ertai
Moderador Global
*****
Desconectado Desconectado

Mensajes: 2.012


Ralph Wiggum


Ver Perfil
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #2 en: 29 Marzo 2006, 22:58 »

Le das muchas vueltas...

Hay muchas funciones que te ayudan a saber si la cadena es una inyección o no.

Vease:

strip_tags();
htmlspecialchars().
addslashes();

Hay más, pero estas las más importantes.

Luego tambien existe el ereg(), eregi(), que te pueden ayudar muy facilmente.

Si deseas parsear cadenas numericas... pasale un is_numeric();  ;)

Lo de los espacios en blanco... pues sí... funciona... pero es muy rebuscado y 'sucio', mejor usa las funciones que ya tienes ;)

Por cierto! Me olvido de las magic_quotes!

Todas esta info esta en:

http://es.php.net
En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
tornar

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #3 en: 29 Marzo 2006, 23:00 »

Si, buena idea, no habia pensado lo de usar +, total como es una cadena de texto...kizas funcione, lo probare.

Gracias. Un saludo.
En línea
tornar

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #4 en: 29 Marzo 2006, 23:01 »

Citar
strip_tags();
htmlspecialchars().
addslashes();

Hay más, pero estas las más importantes.

Luego tambien existe el ereg(), eregi(), que te pueden ayudar muy facilmente.

Gracias Ertai, le echare un vistazo a esto tambien =)
En línea
Kintaro

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #5 en: 19 Abril 2006, 07:00 »

Hay varias formas de representar cualqier caracter, por ejemplo con el codigo ascii.
Si un campo es alfanumerico...¿para que vamos a permitir entrar a mas que esos?
En línea

¡Benkyo, benkyo, benkyo!
sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.655


HAND


Ver Perfil WWW
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #6 en: 13 Junio 2006, 10:08 »

Se que el tema tiene unos meses, pero se me hace importante aclararles a todos que NO basta con quitar los espacios.

podemos emular un espacio con la inyección que mencionas así:

'/**/or/**/''='

para limpiar valores que sabes que son numeros se usa casting:
Código:
$var = (int)$var;
para limpiar strings, las funciones que te sugiere Ertai son las indicadas:

htmlentities();
addslashes();
strip_tags(); <-- esta es para evitar XSS :P

sinembargo si vas a meter codigo HTML para evitar que te salten alertas donde no debe haber usa urlencode() aunque tambien puedes desecnriptar en entities, es mejor usar urlencode y si son datos binarios base64.

Una cosa mas.
como dice Ertai, las explicaciones de las funciones que encontraras en php.net son muy buenas, sinembargo el codigo que colocan para evitar XSS y SQLi los usuarios de php.net son malisimas, no las uses.. usa las funciones que te sugirio ertai para strings y casting para valores numericos.

Saludos!!
En línea

Hans el Topo

Desconectado Desconectado

Mensajes: 1.719


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #7 en: 24 Junio 2006, 22:27 »

yo me genere mis propias funciones con los caracteres alfanumericos que quiero permitir , quitas el espacio la comilla/simple y el % o * y unos cuantos mas y listo (usease dejando solo letras) sobraría para evitar las inyecciones.... xd

si me equivoco que alguien me rectifique ... xD
En línea

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.655


HAND


Ver Perfil WWW
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #8 en: 28 Junio 2006, 02:55 »

Hola Hans el Topo:

lee este documento:
http://acidbits.blogspot.com/

Nunca usa comillas :P

Saludos!!
En línea

R2d2_

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: un sql injection se para simplemente borrando espacios en blanco??
« Respuesta #9 en: 28 Junio 2006, 14:01 »

Tremendo el Acidbit... Me ha gustado mucho el hecho que al final avisara al admin, si señor :D
« Última modificación: 28 Junio 2006, 14:07 por R2d2_ » En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC