首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过管道将二进制数据传递给来自perl变量的命令

通过管道将二进制数据传递给来自perl变量的命令
EN

Stack Overflow用户
提问于 2013-02-26 13:47:44
回答 1查看 1K关注 0票数 2

对于与安全性、DNS缓存中毒和卡明斯基攻击相关的家庭作业,我正在构建一个Perl脚本,它使用Nemesis将数据包发送到本地DNS服务器(这都是在一个封闭的、仅限主机的VMWare网络上完成的)。我已经把调用复仇女神的过程自动化了。

我专门使用Perl来选择随机的DNS事务ID,并将它们添加到我之前创建的DNS有效负载中。现在,有效负载不是DNS应答,而只是一个查询,因此我可以完善有效负载的ID部分并使用Perl将其推送到复仇女神的方法。

我的代码目前是...

代码语言:javascript
复制
 #!/usr/bin/perl

use strict;
use warnings;

my $dnsId = int(rand(65535));

my $idString = sprintf("%x", $dnsId);

if(length($idString) == 1){$idString = "000".$idString}
elsif(length($idString) == 2){$idString = "00".$idString}
elsif(length($idString) == 3){$idString = "0".$idString}

my $payload = $idString."01000001000000000000037777770f646e737068697368696e676c61627303636f6d0000010001";

print(`echo "$payload" | nemesis udp -S10.1.3.1 -D10.1.3.100 -x53 -y33333 -P-`)

我遇到的问题是,复仇女神将数据作为字符串读取,这当然是echo所做的。所以我需要做的是将数据以二进制数据的形式通过管道传递给复仇女神,而不是ASCII。

我想我可以使用pack()来编写一个二进制文件,然后使用"cat /foo/bar/file | nemesis ...“来执行有效负载,但这不是最佳解决方案,因为我不希望额外的IO时间成为在收到可信响应(假设它永远不会到达)之前我可以尝试多少恶意DNS应答的因素。

有什么方法可以让我将这些二进制格式的数据提供给nemesis?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-26 14:02:15

第一,

代码语言:javascript
复制
print(`...`);

简化为

代码语言:javascript
复制
system("...");

由于我们不再通过管道输出nemesis,这意味着我们可以轻松地通过管道连接。(如果要同时执行这两种操作,请使用IPC::Run3IPC::Run。)

代码语言:javascript
复制
my @cmd = ('nemesis',
   'udp', '-S10.1.3.1', '-D10.1.3.100',
   '-x53', '-y33333', '-P-' );

open(my $pipe, '|-', @cmd)
   or die $!;
binmode($pipe);
print($pipe $payload);
close($pipe);

当然,代码的$payload实际上并不包含有效负载,而是它的十六进制表示。您可以pack 'H*'整个过程,但我认为以下是更好的方法:

代码语言:javascript
复制
my $dnsId = int(rand(65536));

my $payload = pack('n H*',
    $dnsId, '010000010000'.  # 000000
    '0000000003777777'.      # 000010
    '0f646e7370686973'.      # 000020
    '68696e676c616273'.      # 000030
    '03636f6d00000100'.      # 000040
    '01');                   # 000050

请注意,我将65535更改为65536,以便可以实际返回65535

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15082249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档