与netcat和heredoc可能的竞争条件

问题描述 投票:0回答:1

我正在OverTheWire做Bandit的24级,我在尝试解决它时遇到了问题。在本练习中,您需要通过端口30002连接本地主机并引入密码和4位数的引脚。

我的bash脚本就是这个:

#!/bin/bash
nc localhost 30002 << Input
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0000
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0001
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0002
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0003
...
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 9998
UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 9999
Input

问题是,当我读取输出时,已经有7175次重试而不是9999.任何人都知道会发生什么?

bash netcat heredoc
1个回答
0
投票

你在最后一个发送行的末尾关闭你的nc,但不要等待答案。我不太了解nc,也许有延迟关闭的选项。

无论如何,这应该工作(睡眠时间可能会有所不同):

( cat << Input
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0000
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0001
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0002
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0003
    ...
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 9998
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 9999
Input
sleep 2
) | nc localhost 30002
© www.soinside.com 2019 - 2024. All rights reserved.