Tema destacado: Suscripción al boletín mensual de elhacker.net
Autor
|
Tema: Duda Inyeccion sql... (Leído 2,900 veces)
|
andres_5
Desconectado
Mensajes: 198
|
Tuve que crear una web para el colegio, pero ahora estoy intentando inyectar codigo SQL a mi misma web, para experiencia personal... el codigo es este: $query = "INSERT INTO `usuarios`(log_nombre, contrasenya, nombre, email, localidad) VALUES ("; $query.= "'".$log_nombre."', '".$contraseña."', '".$name."', '".$email."', '".$localidad."');";
pero aprovecho el ultimo campo de localidad para intentar inyectar esto: localidad'); DROP DATABASE `creandoside`('');
quedando en sentencia SQL algo como esto: INSERT INTO `usuarios`(log_nombre, contrasenya, nombre, email, localidad) VALUES ('123', '123', '123', '123', 'localidad'); DROP DATABASE `creandoside`(''); pero me aparece un error y no tengo ni idea de que sucede, la sentencia del error de phpmyadmin es: consulta SQL: INSERT INTO `usuarios` ( log_nombre, contrasenya, nombre, email, localidad ) VALUES ( '123', '123', '123', '123', 'localidad.' ); MySQL ha dicho: Documentación #1046 - No database selected
saludos y muchas gracias  PD: puse este mismo tema en apartado Programacion/Diseños Web/Bases de Datos... Espero que no os moleste pero pense que talvez es mas correcto aqui, si hay cualquier tipo de problema podeis borrad algunos de los dos temas 
|
|
|
|
|
En línea
|
|
|
|
winroot
Desconectado
Mensajes: 589
#include<winroot.h>
|
es mas correcto en bugs a nivel web.  saludos!
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Lo que pasa es que en MySQL no se pueden concatenar querys con ; como se hace en MSSQL.
|
|
|
|
|
En línea
|
 ---
|
|
|
andres_5
Desconectado
Mensajes: 198
|
no entiendo bien lo que me quieres decir :S Pero voy a añadir esto para evitar confusion: <?php include "base.php"; $name= $_POST['usureg']; $nick= $_POST['nickreg']; $pass= $_POST['passreg']; $pass2= $_POST['passreg2']; $email= $_POST['emailreg']; $localidad= $_POST['locreg']; if ($pass == $pass2){ include "base.php";
$log_nombre=$_POST['nickreg']; $contraseña=$_POST['passreg']; $name= $_POST['usureg']; $email= $_POST['emailreg']; $localidad=$_POST['locreg'];
$query = "INSERT INTO `usuarios`(log_nombre, contrasenya, nombre, email, localidad) VALUES ("; $query.= "'".$log_nombre."', '".$contraseña."', '".$name."', '".$email."', '".$localidad."');";
$resultado = mysql_query($query, $conexion);
if ($resultado) { echo 'Usuario '.$log_nombre.' registrado con éxito.<br/>'; ?> <meta http-equiv="refresh" content="5;URL=inicio.php"> <?php } else { echo '<br/>'.$query.'<br/><br/>'; echo 'Usuario '.$log_nombre.' y Contraseña '.$contraseña.', no ha podido ser registrado.<br/>'; }} else{ ?> <script>alert('Debes confirmar la contraseña')</script> <meta http-equiv="refresh" content="0;URL=registro.php"> <?php } ?> </body>
</html>
Gracias por vuestra atencion
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
mmm te doy la respuesta de un Dios!, sé que no quieres hacer un UPDATE, pero supongo que es lo mismo que con un DELETE! no puedes hacer un UPDATE si ya estas en el contexto de un SELECT. en MySQL no se pueden hacer varias queries por consulta. (como en mssql).
Saludos!!
|
|
|
|
|
En línea
|
 ---
|
|
|
Lobito14
Desconectado
Mensajes: 21
|
Ahi veo varias cosas que no me terminan de convencer...
A ver, primero que nada, incluyes dos veces el archivo "base.php" que supongo que sera en el que tengas declarada la variable $conexion.
Podias poner tambien ese codigo aqui...
Porque el fallo que te da PhpMyAdmin es que no has selccionado la base de datos en la que hacer esa consulta, eso se hace con: "USE nombredb;"
Ya nos cuentas.
|
|
|
|
« Última modificación: 12 Junio 2010, 13:40 por ErLoBo »
|
En línea
|
|
|
|
|
|
Lobito14
Desconectado
Mensajes: 21
|
Ahí va! eso es lo que espero que tenga en su archivo "base.php", si no... ya sabemos donde tiene el problema!
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
... ya sabemos donde tiene el problema! El problema, es que ese no era el problema xD, lo que él queria hacer era inyectar código SQL, dentro de una Query ya construida.
|
|
|
|
|
En línea
|
 ---
|
|
|
Lobito14
Desconectado
Mensajes: 21
|
... pero me aparece un error y no tengo ni idea de que sucede, la sentencia del error de phpmyadmin es: consulta SQL: INSERT INTO `usuarios` ( log_nombre, contrasenya, nombre, email, localidad ) VALUES ( '123', '123', '123', '123', 'localidad.' ); MySQL ha dicho: Documentación #1046 - No database selected
saludos y muchas gracias  PD: puse este mismo tema en apartado Programacion/Diseños Web/Bases de Datos... Espero que no os moleste pero pense que talvez es mas correcto aqui, si hay cualquier tipo de problema podeis borrad algunos de los dos temas  Es que como el dice que le aparece un error y no tiene idea de lo que sucede, y como el error es "#1046 - No database selected", por eso pense que preguntaba por ese error. Saludos!
|
|
|
|
|
En línea
|
|
|
|
WHK
吴阿卡
Moderador
 
Desconectado
Mensajes: 4.113
The Hacktivism is not a crime
|
... pero me aparece un error y no tengo ni idea de que sucede, la sentencia del error de phpmyadmin es: consulta SQL: INSERT INTO `usuarios` ( log_nombre, contrasenya, nombre, email, localidad ) VALUES ( '123', '123', '123', '123', 'localidad.' ); MySQL ha dicho: Documentación #1046 - No database selected
saludos y muchas gracias  PD: puse este mismo tema en apartado Programacion/Diseños Web/Bases de Datos... Espero que no os moleste pero pense que talvez es mas correcto aqui, si hay cualquier tipo de problema podeis borrad algunos de los dos temas  Es que como el dice que le aparece un error y no tiene idea de lo que sucede, y como el error es "#1046 - No database selected", por eso pense que preguntaba por ese error. Saludos! eso sucede en phpmyadmin porque no seleccionaste una base de datos de la lista de bases de datos antes de ejecutar la query. primero selecciona la abse de datos y luego ejecutas la query.
|
|
|
|
|
En línea
|
|
|
|
MagnoBalt
Desconectado
Mensajes: 58
Los Buenos Artitas Copian, los Grandes Roban
|
Buenas, como algunos usuarios recalcarón no se puede realizar Stacked Query en MySQL con PHP, por lo tanto no te puedes salir de esa consulta para apilar una nueva, es imposible usando esas tecnologias por desgracia :p Ahora si estas dentro de un SELECT puedes inyectar con Subconsultas o con la Clausula UNION Escenarios Correctos:Con UNIONSELECT TITULO, CUERPO, FECHA FROM NOTICIAS WHERE ID = 4 INYECCION SELECT TITULO, CUERPO, FECHA FROM NOTICIAS WHERE ID = -4343 UNION SELECT PASSWORD,USERS,3 FROM USUARIOSCon SUBCONSULASELECT TITULO, CUERPO, FECHA FROM NOTICIAS WHERE ID = 4 SELECT TITULO, CUERPO, FECHA FROM NOTICIAS WHERE ID = 4 AND (SELECT COUNT(*) FROM USERS)Este tipo de ataques a subconsultas es la la logica de Booleanizacion la cual es la tecnica de Blind SQL. andres_5 a lo que voy es que no puedes hacer esto en mysql con php SELECT TITULO, CUERPO, FECHA FROM NOTICIAS WHERE ID = 4; DELETE * FROM USUARIOS No se permiten stacked query, dejo una imagen donde muestra los esenarios donde se soporta y donde no.  Saludos
|
|
|
|
|
En línea
|
|
|
|
|
|