|
52
|
Seguridad Informática / Nivel Web / Re: Se puede inyectar sql en este bug???
|
en: 26 Octubre 2009, 13:27 pm
|
Ok, pero la bbdd esta en access, y no en mysql, de todas formas ahora estoy tratando de encontrar el número de columnas, porque me dice que en la unión no coincide el número de columnas, porque viendo los datos que se muestran en la web al hacer una búsqueda, calculo que la tabla tiene 26 campos, pero ' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from Tabla where Hotel like '
Pero sigue dando error así que me falta encontrar el numero de columnas.
|
|
|
53
|
Seguridad Informática / Nivel Web / Re: Se puede inyectar sql en este bug???
|
en: 26 Octubre 2009, 00:22 am
|
Pero ahí falta la clausula from para saber de que tabla hay que coger los datos, por eso quería hacer un having para forzar el error y que me diera el nombre de la tabla. EDITO: Ya he descubierto el nombre de la tabla, solo era un poco de deducción
|
|
|
54
|
Seguridad Informática / Nivel Web / Se puede inyectar sql en este bug???
|
en: 24 Octubre 2009, 20:16 pm
|
Hola, iba hacer una búsqueda de hoteles en una web y descrubri que el formulario de búsqueda de hoteles es vulnerable a la inyección sql, la cuestión es que la bbdd esta sobre access y ahí es donde tengo el problema, porque según he leído access no posee comentarios, así que no puedo intercalar código sql, ahora les expongo como esta cosa.
La consulta se hace de la siguiente manera.
Hotel LIKE '%$input%'
Suponiendo que el $input es la entrada desde el formulario directamente sin filtrar, ¿como puedo hacer desaparecer %'? ya que para cerrar el like si que puedo pero si hago un having o una subconsulta el %' me toca los ... He probado por si las moscas pero sin exito, //, /*, #, --, null y nada no consigo cortar ahí la sentencia sql, ¿alguien sabría como?
Saludos.
|
|
|
60
|
Programación / PHP / PHP + MySql + BLOB
|
en: 1 Abril 2009, 02:55 am
|
Buenas, estoy haciendo una pequeña web que carga unas imágenes en la bbdd y después las recupera, hasta ahí todo correcto, el problema viene cuando quiero insertar las imágenes, me he hecho un formulario con su php para cargar las imágenes a la bbdd pero después a la hora de mostrarlas no salen y si miro en phpMyAdmin si que aparecen, pero lo más curioso es que si inserto las imágenes desde phpMyAdmin si que las puedo leer bien desde la bbdd y mostrarlas bien, bueno en realidad de tres imágenes por fila solo muestra 2 bien pero eso será otro error diferente que habrá que corregir. Añado los scripts para que lo veáis y juzguéis. Formulario html <h2>Sistema de actualizaci ón </h2> <form enctype="multipart/form-data" method="post" action="upload.php"> <p>Imagen Full (Grande 1000x750): <input type="file" name="full"></p> <p>Imagen medium (Mediana 500x375): <input type="file" name="medium"></p> <p>Imagen Small (Peque ña 100x75): <input type="file" name="small"></p> <p><input type="submit" name="send" value="Enviar"></p>
Script que procesa el forulario<?php require_once 'bd.php'; function leer_fichero($name){ $fp = fopen ($name, 'r'); if ($fp){ } return $datos; } function insertar($imagen_full_bin, $imagen_medium_bin, $imagen_small_bin, $titulo, $descripcion){ $sql = "INSERT INTO archivos (id, img_full, img_medium, img_small, titulo, descripcion) VALUES ('', '$imagen_full_bin', '$imagen_medium_bin', '$imagen_small_bin', '$titulo', '$descripcion')"; mysql_query($sql) or die("No se pudo insertar los datos en la base de datos."); } // Comienza el script $img_full = $_FILES['full']['tmp_name']; $img_medium = $_FILES['medium']['tmp_name']; $img_small = $_FILES['small']['tmp_name']; $imagen_full_bin = leer_fichero($img_full); $imagen_medium_bin = leer_fichero($img_medium); $imagen_small_bin = leer_fichero($img_small); $titulo = $_POST['titulo']; $descripcion = $_POST['descripcion']; insertar($imagen_full_bin, $imagen_medium_bin, $imagen_small_bin, $titulo, $descripcion); header("Location: upload.html"); // si ha ido todo bien ?>
Script que muestra las imágenes<?php require_once 'bd.php'; $id = (isset($_GET['id']) ? $_GET['id'] : exit()); $tam = (isset($_GET['tam']) ? $_GET['tam'] : exit()); switch($tam){ case "full": $sql = "SELECT img_full FROM archivos WHERE id = $id"; header("Content-type: image/jpg"); echo $img; break; case "medium": $sql = "SELECT img_medium FROM archivos WHERE id = $id"; header("Content-type: image/jpg"); echo $img; break; case "small": $sql = "SELECT img_small FROM archivos WHERE id = $id"; header("Content-type: image/jpg"); echo $img; break; } ?>
Tabla de MySqlCREATE TABLE IF NOT EXISTS `archivos` ( `id` INT NOT NULL AUTO_INCREMENT, `img_full` longblob NOT NULL, `img_medium` longblob NOT NULL, `img_small` longblob NOT NULL, `titulo` VARCHAR(50) COLLATE utf8_spanish_ci NOT NULL, `descripcion` VARCHAR(100) COLLATE utf8_spanish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
|
|
|
|
|
|
|