Возможное состояние гонки с netcat и heredoc - PullRequest
0 голосов
/ 19 апреля 2019

Я делаю 24 уровень Bandit в OverTheWire, и у меня возникла проблема при попытке ее решить. В этом упражнении вам необходимо подключиться к локальному хосту через порт 30002 и ввести пароль и пин-код из 4 цифр.

Мой bash-скрипт такой:

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

Проблема в том, что когда я читаю вывод, было выполнено 7175 попыток вместо 9999. Кто-нибудь знает, что может происходить?

1 Ответ

0 голосов
/ 19 апреля 2019

Вы закрываете свой nc в конце своей последней строки отправки, но не ждете ответа.Я не знаю nc в деталях, возможно, есть опция для отложенного закрытия.

В любом случае, это должно работать (время сна может варьироваться):

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