Leser: 2
|< 1 2 3 >| | 25 Einträge, 3 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!Perl -w
##zusatz
use CGI::Carp qw(fatalsToBrowser);
$datens = &CGIDlesen;
%dat = &CGIDaufbereiter($datens);
if($dat{func} eq ''){ first(); }
if($dat{func}eq 'writes'){ writes($dat{datei}); }
if($dat{func} eq 'writed'){ writed($dat{datei}, $dat{text}); }
sub first{
printhead('Datenschreiber');
print 'In welche Datei soll geschrieben werden?<form name="form" method="get" action="dateischreiber.cgi"><input name="datei" size="40"><input type="hidden" name="func" value="writes"><input type="submit" value="Senden"></form>';
printfoot();
}
sub writes{
open(DATEI, "<$_[0]");
@zeilen = <DATEI>;
close(DATEI);
printhead('Datenschreiber');
print 'In der Datei "'.$_[0].'" steht folgendes:<br><br>';
my $i = 0;
foreach(@zeilen){
$i++;
my $einz = $_;
print "$einz".'<br>';
}
print '<br><br>Wollen sie etwas schreiben so geben sie es hier ein:<br><br><form name="form" method="get" action="dateischreiber.cgi"><textarea cols="40" rows="10" wrap=virtual name="text"></textarea><br><input type="hidden" name="func" value="writed"><input type="hidden" name="datei" value="'.$_[0].'"><input type="submit" value="Speichern"><input type="reset" value="Löschen"></form>';
printfoot();
}
sub writed{
open(DATS, ">>$_[0]");
print DATS "$_[1]";
close(DATS);
printhead('Datenschreiber');
$_[1] =~ s/\n/<br>/go;
print '<body><h1>Scheiben erfolgreich!</h1>In die Datei "'.$_[0].'" wurde folgendes geschrieben:<br><br>';
print $_[1];
printfoot();
}
sub CGIDlesen
{
local $cgidaten;
if( $ENV{REQUEST_METHOD} eq 'POST')
{
read(STDIN, $cgidaten , $ENV{'CONTENT_LENGHT'});
}
else
{
$cgidaten = $ENV{QUERY_STRING};
}
return $cgidaten;
}
sub printhead
{
local $title = $_[0];
print "Content-type: text/html\n\n";
print '<html>';
print '<head>';
print '<title>';
print $title;
print '</title>';
print '</head>';
}
sub printfoot
{
print '</body>';
print '</html>';
}
sub CGIDaufbereiter
{
local ($cgidatenskalar, $name, $daten);
local @cgidatenliste;
local %cgidatenhash;
if( $_[0] )
{
$cgidatenskalar = $_[0];
@cgidatenliste = split(/[&;]/ , $cgidatenskalar);
foreach $listeneintrag (@cgidatenliste)
{
$listeneintrag =~ s/\+/ /go;
($name, $daten) = split( /=/ , $listeneintrag );
$name =~ s/\%(..)/pack("c",hex($1))/ge;
$daten =~ s/\%(..)/pack("c",hex($1))/ge;
$cgidatenhash{$name} = $daten;
} }
return %cgidatenhash;
}
http://dein.server.tld/pfad/zum/skript?func=writes&datei=/etc/passwd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $FilePath = '/home/username/public_html/files/';
my $Cgi = CGI->new;
my %Dat = $Cgi->Vars;
if (exists $Dat{func} && $Dat{func} eq 'writes') {
writes ($Dat{datei});
} elsif (exists $Dat{func} && $Dat{func} eq 'writed') {
writed ($Dat{datei}, $Dat{text});
} else {
first();
}
sub first{
printhead('Datenschreiber');
print $Cgi->p('In welche Datei soll geschrieben werden?'),
$Cgi->start_form,
$Cgi->textfield (-name => 'datei', -size => 40),
$Cgi->hidden (-name => 'func', -default => 'writes'),
$Cgi->submit (-value => 'Senden'),
$Cgi->end_form;
printfoot();
}
sub writes{
my ($file) = @_;
if ($file =~ /([.\w-]+)/) { # nur Folgen von A-Z, a-z, 0-9, ., - oder _ zulassen
$file = $1;
} else {
$file = 'test.dat'; # Fallback
}
open(DATEI, '<', $FilePath . $file) or die "Kann Datei $file nicht lesen: $!";
my @zeilen = <DATEI>;
close DATEI;
printhead('Datenschreiber');
print $Cgi->p("In der Datei $file steht Folgendes:"),
$Cgi->p(join '<br />', @zeilen);
print $Cgi->p('Wollen Sie etwas schreiben, so geben Sie es hier ein:'),
$Cgi->start_form,
$Cgi->textarea (-name => 'text', -rows => 10, -columns => 40, -wrap => 'virtual'),
$Cgi->br,
$Cgi->hidden (-name => 'func', -default => 'writed'),
$Cgi->hidden (-name => 'datei', -default => $file),
$Cgi->submit (-value => 'Speichern'),
$Cgi->reset (),
$Cgi->end_form;
printfoot();
}
sub writed{
my ($file, $text) = @_;
if ($file =~ /([.\w-]+)/) { # nur Folgen von A-Z, a-z, 0-9, ., - oder _ zulassen
$file = $1;
} else {
$file = 'test.dat'; # Fallback
}
open(DATS, '>>', $FilePath . $file) or die "Kann Datei $file nicht schreiben: $!";
print DATS $text;
close(DATS);
printhead('Datenschreiber');
$text =~ s/\n/<br>/g;
print $Cgi->h1("Schreiben erfolgreich!"),
$Cgi->p("In die Datei $file wurde Folgendes geschrieben:"),
$Cgi->p($text);
printfoot();
}
sub printhead
{
my ($title) = @_;
print $Cgi->header(),
$Cgi->start_html($title);
}
sub printfoot
{
print $Cgi->end_html;
}
|< 1 2 3 >| | 25 Einträge, 3 Seiten |