Dreamhack - command-injection-1(커맨드 인젝션)

·2025년 6월 29일

Dreamhack-Writeups

목록 보기
7/52

command-injection-1

문제 링크

https://dreamhack.io/wargame/challenges/44

문제 설명

특정 Host에 ping 패킷을 보내는 서비스에서 Command Injection을 통해 플래그를 획득하는 문제입니다. 플래그는 flag.py에 있습니다.

풀이과정

  1. Host에 8.8.8.8을 입력하면 ping이 제대로 넘어감을 확인했고, 이 입력란에 Command Injection을 사용해야 함을 유추해볼 수 있었습니다.

  2. 8.8.8.8; cat flag.py 로 입력하였지만 형식에 맞지 않다며 오류메시지가 뜨고, ping이 수행되지 않았습니다.

  3. f12를 눌러 개발자 도구를 켜주고, html 코드에서 위의 입력을 막는 코드를 찾아낼 수 있었습니다.
    pattern="[A-Za-z0-9.]{5,20}" 라는 코드로, 이는 "영어/숫자/마침표로만 구성된 문자열이며, 길이는 5~20자여야 함"을 의미합니다. 이를 요소에서 제거해 우회합니다.

  4. 다시 8.8.8.8; cat flag.py 을 입력하여도 우리가 원하는 플래그 값이 나오지 않습니다.
    이는 제공된 파이썬 코드의 cmd = f'ping -c 3 **"{host}"** 이 부분 때문입니다. 우리가 요청을 보낸 값이 큰 따음표 안에 한번에 들어가는 구조이기에 "8.8.8.8; cat flag.py" 로 한번에 인식됩니다. 즉, Command Injection이 성공되지 못하고 에러가 뜹니다.

  5. 따로 실행이 될 수 있도록 8.8.8.8"; cat flag.py" 형태로 넣어줍니다. 앞 8.8.8.8이 제대로 실행되고, 뒤의 우리가 원하는 ; cat flag.py" 공격을 따로 인식시키기 위해서 따음표가 필요합니다.

  6. 이렇게 입력했을 경우 cmd = f'ping -c 3 "8.8.8.8"; cat flag.py"" 로 실행됩니다.

  7. 첫번째 명령은 ping -c 3 "8.8.8.8" 으로 정상 수행되고, 두 번째 명령인 cat flag.py"" 은 큰따옴표 두 개는 빈 문자열로 무시되며 cat flag.py가 정상 실행됩니다.

  8. 최종적으로 flag.py의 내용을 출력해 플래그를 획득할 수 있었습니다.


배운점

  • Command Injection의 명령어 등, 기본 공격을 학습할 수 있었습니다.
  • 필터 우회 시 HTML의 pattern 속성 제거를 통해 클라이언트 사이드 제한을 우회하는 방법을 배웠습니다.
  • Injection 성공을 위해 따옴표의 위치가 명령어 분리와 구문 탈출에 매우 중요한 역할을 한다는 점을 체감하였습니다.

Summary (English)

  • Confirmed that the input field executes system commands via ping.
  • Initial payloads like 8.8.8.8; cat flag.py were blocked due to HTML pattern validation.
  • Removed the pattern attribute using DevTools to bypass client-side restrictions.
  • Found that the backend wraps user input in double quotes: ping -c 3 "{host}", preventing basic command injection.
  • Injected a payload like 8.8.8.8"; cat flag.py" to escape the quotes and chain another command.
  • The full command becomes ping -c 3 "8.8.8.8"; cat flag.py"", where the final "" is ignored.
  • Successfully executed cat flag.py and obtained the flag.
profile
CTF 풀이 및 실습 중심 학습을 기록합니다.

0개의 댓글