Dreamhack - whatsdifferent(misc)

·2025년 11월 5일

Dreamhack-Writeups

목록 보기
46/52

whatsdifferent

문제 링크

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

문제 설명

드림이는 ff 파일의 내용을 약간 수정해서 fs 파일로 저장했습니다. 드림이가 수정한 부분은 어디였을까요?

수정한 부분이 포함된 라인의 전체 문자열을 획득하고 DH{ } 중괄호 안에 넣어서 인증해 주세요.

Hint : ff 파일과 fs 파일의 다른 점을 찾아 보세요.

풀이과정

  1. 주어진 코드를 확인합니다.
char filter[] = {'&', ';', '|', '$', '`', '*','[', ']', '{', '}', '\\', '^', '~', '?', '#', '!'};

코드에서 커멘트 인젝션을 막기위해 특정 기호들을 필터링 해둔 것을 확인할 수 있었습니다. 다행히 우리가 할 공격과는 상관이 없었습니다.

 initialize();
 system("ls -al");
 printf("Input Command: \n");
 scanf("%20[^\n]", input);

접속하자마자 확인할 수 있는 초기 설정입니다. ls를 통해 현재 디렉토리의 모든 파일을 다 보여주고 있다는 것을 확인할 수 있습니다.

  1. 우분투 환경에서 주어진 VM에 접속해줍니다.
-r--r----- 1 root chall  3445 Jul 27  2023 ff
-r--r----- 1 root chall  3445 Jul 27  2023 fs

출력되는 ls -al 목록에서 ff와 fs 파일 또한 확인 가능했습니다.
3. ff를 수정한 fs파일의 전체 문자열을 획득하는 것이 목표이니 cat fs 를 통해 fs의 내용을 접근해보았습니다.

Input Command: 
cat fs
9c9
< b1651c307aa6263ecf94fed58b44d90bba293a0944b102e52528bac139f4b9e5
---
> b1651c307aa6263ecf94fed58b44d90bba293a0944bl02e52528bac139f4b9e5
Terminated

매우 쉽게 문자열을 획득할 수 있었습니다...
<는 수정전의 ff, >는 수정 후의 fs 내용일거라 생각하고, 플래그를 제줄해 보았더니 문제가 풀렸습니다.


배운점

  • ls -al을 통해 파일의 존재를 확인하고, cat을 했더니 바로 문제가 풀려 얼떨떨했습니다. 푸는 법이 이게 맞나..? 싶은 생각도 들었지만.. 역시 cat 명령어는 강력하다고 느꼈습니다.
  • 찾아보니 리눅스 명령어인 diff ff fs 를 통해서도 풀이가 가능하다고 합니다. diff는 파일의 차이점을 찾아주는 유닉스/리눅스 명령어입니다. 주로 텍스트 파일 두 개를 비교하여, 어떤 라인이 추가, 삭제 또는 변경되었는지 알려줍니다.

Summary (English)

  • The challenge provides two files: ff (original) and fs (modified).
  • The program filters some special characters to prevent command injection, but it automatically runs ls -al, allowing the user to see existing files including ff and fs.
  • The input command is executed via system(), so simply running cat fs prints the contents of the modified file.
  • Output shows the difference: fs contains one modified character compared to ff.
  • Submitting the modified full line from fs in the format DH{ ... } solves the challenge.
  • Alternatively, the diff ff fs command can also show the changed line.
profile
CTF 풀이 및 실습 중심 학습을 기록합니다.

0개의 댓글