elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  ¿Esto vale para algo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Esto vale para algo?  (Leído 2,799 veces)
dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
¿Esto vale para algo?
« en: 8 Marzo 2012, 20:54 pm »

Código
  1. $texto='cadena con ataque';
  2.  
  3. $texto=stripslashes($texto);
  4. $texto=mysql_real_escape_string($texto);
  5.  
  6. mysql_query("SELECT * FROM Usuarios WHERE Nombre='$texto'");

Pues me gustaría saber dos cosas:

1º Si el mysql_real_escape_string en este caso vale para algo.

2º Como podriamos atacar este ejemplo.


1000 gracias.


En línea




WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: ¿Esto vale para algo?
« Respuesta #1 en: 8 Marzo 2012, 21:34 pm »

en el caso de que $texto valga:
' union select database(),2,3,4,5,6 -- -
con mysql_real_escape_string te evita la inyección, sin el mysql real escape string te retorna una inyección sql con el nombre de la base de datos, si agregas un from tabla te debuelve los campos de la tabla, por ejemplo el password del usuario admin con un where id = x.


Lee un poco los tutoriales sobre inyección sql que andan por el foro.
Dale un vistazo a estos enlaces:

http://cl.php.net/manual/es/security.database.sql-injection.php (importante!)
Citar
Encierre entre comillas cada valor no-numérico provisto por el usuario que sea pasado a la base de datos filtrado con la función de cadena específica de la base de datos (Ej. mysql_real_escape_string(), sqlite_escape_string(), etc.). Si una función de escape (o de filtrado) de cadena específica de la base de datos, o un mecanismo similar no está disponible, las funciones addslashes() y str_replace() podrían ser útiles (dependiendo del tipo de la base de datos). Vea el primer ejemplo. Como lo muestra el ejemplo, agregar comillas a la parte estática de la consulta no es suficiente, lo que hace que esta consulta sea facilmente vulnerada.
No muestre ninguna información específica de la base de datos, especialmente sobre el esquema, por su correcto significado es como jugar sucio contra usted mismo. Vea también Reporte de errores y Manejo de errores y funciones de registro.
Podría utilizar procedimientos almacenados y previamente cursores definidos, para abstraer el acceso a datos para que los usuarios no tengan acceso directo a las tablas o vistas, para que esta solución tenga otros impactos.

http://foro.elhacker.net/nivel_web/gran_tutorial_sobre_inyecciones_sql_en_mysql-t247535.15.html

http://cl.php.net/mysql%20real%20escape%20string

Citar
Escapa caracteres especiales en la cadena no escapada, teniendo en cuenta el conjunto de caracteres actual de la conexión para que sea seguro usarla en mysql_query(). Si se van a insertar datos binarios, esta función debe ser usada.

mysql_real_escape_string() llama la función de la libreria de MySQL mysql_real_escape_string, la cual antepone backslashes a los siguientes caracteres: \x00, \n, \r, \, ', " y \x1a.

Esta función siempre debe (con pocas excepciones) ser usada para hacer los datos seguros, antes de enviar una consulta a MySQL.


« Última modificación: 8 Marzo 2012, 21:37 pm por WHK » En línea

Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: ¿Esto vale para algo?
« Respuesta #2 en: 8 Marzo 2012, 23:24 pm »

stripslashes que hace??  por su nombre me suena a  que    quita   \   o  que las escapa  \\

pero si


Citar
mysql_real_escape_string() llama la función de la libreria de MySQL mysql_real_escape_string, la cual antepone backslashes a los siguientes caracteres: \x00, \n, \r, \, ', " y \x1a.
  tambien escapa  \ 

siginfica que si metes la cadena    \'  or 1=1  --

y esperabas que solo escapara la  '   no funcionara ....  en teoria:   \\' or 1=1 --   \ agregada escape con la otra diagonal, y se haga la injeccion a pesar del escape 

pero como escapa tambien diagonales...  quedaria realmente asi
\\\' or 1=1 --

Citar
$texto='cadena con ataque';
 
$texto=mysql_real_escape_string($texto);
 
mysql_query("SELECT * FROM Usuarios WHERE Nombre='$texto'");

no me parece un codigo rompible... 
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: ¿Esto vale para algo?
« Respuesta #3 en: 9 Marzo 2012, 13:29 pm »

no no no, stripslashses los quita antes de parsear mysql real escape string, el strip slash se lo ponen generalmente para evitar los magic quotes del apache, por ejemplo si ingresas un texto con comillas le agrega solito el servicod unos slashses, con esa función se quita, el problema es que si el servidor no tiene habilitado magic quotes entonces le vas a comer los slashes reales que ha ingresado el usuario, por eso se debe detectar primero si está habilitado magic quotes y después procesar con stripslashses.

Después que está limpio lo procesa mysql real escape string, pero ojo, el motor mysql te va a dar error si tratas de hacer eso en un campo con valor int, para eso se utiliza (int)$valor dependiendo del tipo de campo y en ese caso no se le ponen comillas. Lo he explicado como 500 veces:
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
X.sys, sabes algo de esto?
Hacking Mobile
Tormar 3 4,141 Último mensaje 22 Agosto 2006, 18:25 pm
por phreackgsm
¿Me vale de algo una xbox 360 que esta chipeada en lugar de flasheada?
Juegos y Consolas
badranito 2 2,510 Último mensaje 5 Marzo 2010, 01:54 am
por Embusterillo de bolsillo
Existe algo como esto?
Seguridad
Inspiron21 2 2,679 Último mensaje 2 Agosto 2010, 08:10 am
por Inspiron21
crear matriz con numeros aleatorios en c
Programación C/C++
juankpo121 8 17,029 Último mensaje 19 Agosto 2017, 20:08 pm
por engel lex
Más te vale no romper la pantalla del iPhone X, esto es lo que cuesta repararla
Noticias
wolfbcn 0 1,412 Último mensaje 28 Octubre 2017, 01:53 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines