to :beckheng(☆碧恒☆)
是用我发给你的那个试的吗?如果是的话,我机器确实有这个的,要我我做个截图给大家看一下,为什么我这里有你那里没呢?如果不是你运行我发给你的一个是编译的还有那个没编译的东西,你运行看看,我运行是编译的没有错误消息,也就是说最后打开LOG文件内容为空,运行脚本的就会在最后调用的LOG文件中出现那个错误的消息
------------------------------------------------
还有我的机器上在按照配方昨天改完的后,我打开天网(防火墙)这时我的程序
运行,天网出来提示筐 是否润许TCP传输,这是不是说明我的SOCKET建立成功,但IP格式不对,所以程序无法正确的做出扫描的判断呢?
------------------------------------------------
to:谢谢肯兄,你说的我明白了,下午我在改改程序,看能否在出现错误消息了
------------------------------------------------
我又把程序改了一点,我想基本上没有以前的错误了,
但是程序运行到最后还是那样,也扫不到漏洞,错误消息还是有
#!c:\perl.exe
print "请输入要测试的IP地址,确认请输入Y,否请输入N==>[y/n]";
chomp($input=<STDIN>);
if ($input=~/y/i){
chomp($ip=<STDIN>);
}else{
print "input a ip";
exit(1);
}
print "向漏洞库添加新的BUG ?[y/n]";
chomp($newbugyn=<STDIN>);
if ($newbugyn=~/y/i) {
chomp($newbug=<STDIN>);
open (BUG,">>bug.txt")||&error;
print BUG "\n$newbug";
&connects;
close (BUG);
}else{
&connects;
}
sub connects {
$port=80;
$PF_INET=2;
$SOCK_STREAM=1;
$unbarry='S n C4 x8';
$port=80;
@ips=split (/\./,$ip);
$adrs=pack ($unbarry,$PF_INET,$port,@ips);
$proto=getprotobyname ('tcp');
socket(SOCKET,$PF_INET,$SOCK_STREAM,$proto)|| die "ddd :$!";
print "正在连接请等待........\n";
print "正在收集服务器资料\n";
connect(SOCKET,$adrs)|| die "canit :$!";
print "连接成功\n";
$|=1;
print SOCKET "GET HTTP/1.0\n\n";
print "写如成功\n";
open (BUG,"bug.txt")||&error;
while ($new=<SOCKET>) {
print "\n$new";
}
while ($wbug=<BUG>) {
print SOCKET "$wbug";
$|=1;
$fettle=<SOCKET>;
if (grep/200/,$fettle){
print "\a\a\a发现CGI漏洞:->$wbug...........";
close LOG;
open (LOG,">>log.txt");
print LOG "server:->$ip have a bug $wbug";
}else{
print "\n扫描程序scaner没有在服务器$ip探测到任何BUG";
close LOG;
}
}
close SOCKET;
}
system ("notepad","log.txt");
exit(1);
sub error {
print "error :can't file\n";
print "请从新运行程序\n";
exit (1);
}
另,一个小小的建议,再贴代码前,最好能把格式整理一下,还有一些语句规范一下,比如有 open 了,最好也加上 close ,一个段落开头有几个 tab 做成固定的,也就是把层次分的清楚一些,注释呢,按 beckheng 提的,尽力用 english 吧,或者最好能把注释符和前面的语句间隔一个空格 or tab ,可能会更容易分析;)