我做了一个简单的脚本来发送一个数据包,我需要读取响应,如果响应是我正在寻找然后打印输出是好的,如果没有打印出来是坏的,现在,如果IP是无所谓,那么脚本工作并打印出它的漏洞。现在,如果它不那么庸俗,那么脚本就会挂起并停止发送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;
}
示例错误:
使用NON 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.";
非常感谢任何帮助。
答案 0 :(得分:2)
use warnings;
eq
进行字符串比较,==
进行数字比较recv()
没有超时。致电setsockopt
并查看this thread了解详情。答案 1 :(得分:0)
如果您确实检查了它挂在哪里,我相信您会发现它正在尝试接收数据。