【发布时间】:2014-02-04 03:22:51
【问题描述】:
好吧,我做了一个简单的脚本来发送一个需要读取响应的数据包,如果响应是我正在寻找的,那么打印出来是好的,如果不是打印出来是坏的,现在如果 ip 是 vuln,那么该脚本有效并打印出它的漏洞。现在,如果它不是 vuln,那么脚本就会挂起并卡在发送 HEX 数据的有效负载上。
use IO::Socket;
use strict;
print "Connecting..\n";
my $socket = IO::Socket::INET->new(
PeerAddr => '23.113.161.164', # 38.124.108.67 <-- NON vuln ip for testing
PeerPort => 123, # 23.113.161.164 <-- This IS a vuln ip!
Proto => 'udp',
Timeout => 1);
die "Error With Sockets!: $!\n" unless $socket;
print "Connected!\n";
my $payload = "\x97\x00\x00\x00\xAA\x00\x00\x00";
my $good = "\x97\x00\x00\x00";
$socket->send($payload) or die "Nothing got sent.";
my $data;
$socket->recv($data,4);
my $response = substr($data,0,8);
$response = reverse($response);
print $response;
if ($response == "\x97\x00\x00\x00") {
print "IP IS VULN\n";
} else {
print "IP IS NOT VULN\n";
exit;
}
示例错误:
使用非 vuln ip:
root@localhost:~# perl 2.pl
Connecting..
Connected!
(这就是卡住的地方)
使用 vuln ip:
root@localhost:~# perl 2.pl
Connecting..
Connected!
▒IP IS VULN
(如你所见)
这是脚本卡住的地方:
$socket->send($payload) or die "Nothing got sent.";
任何帮助将不胜感激。
【问题讨论】:
-
始终使用
use warnings;。您的代码有一个重大错误,这会发现。