【问题标题】:Possible race condition with netcat and heredocnetcat 和heredoc 的可能竞争条件
【发布时间】:2019-09-09 20:58:51
【问题描述】:

我正在 OverTheWire 中完成 24 级的 Bandit,但在尝试解决它时遇到了问题。 在本练习中,您需要通过 30002 端口与 localhost 连接,并输入密码和 4 位数的 pin。

我的 bash 脚本是这个:

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

问题是,当我读取输出时,重试次数为 7175 次,而不是 9999 次。 有人知道会发生什么吗?

【问题讨论】:

  • wc -l替换nc localhost 30002,看看它认为的行数是多少

标签: bash netcat heredoc


【解决方案1】:

您在最后一个发送行的末尾关闭了您的 nc,但不要等待答案。我不知道nc的详细情况,也许有延迟关闭的选项。

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

( cat << Input
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0000
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0001
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0002
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 0003
    ...
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 9998
    UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ 9999
Input
sleep 2
) | nc localhost 30002

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 2013-05-06
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 2010-11-05
    • 2019-11-25
    相关资源
    最近更新 更多