Dreamhack - ex-reg-ex (정규표현식)

·2025년 7월 5일

Dreamhack-Writeups

목록 보기
15/52

ex-reg-ex

문제 링크

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

문제 설명

문제에서 요구하는 형식의 문자열을 입력하여 플래그를 획득하는 문제입니다. 플래그는 flag.txt 파일과 FLAG 변수에 있습니다.
플래그 형식은 DH{...} 입니다.

풀이과정

  1. 제시된 app.py를 확인해 보았습니다.
    import re
    를 보니 정규표현식을 활용한 문제임을 유추해볼 수 있었습니다.
    • 파이썬의 re 모듈은 정규표현식(Regular Expression) 처리를 위한 모듈입니다.
    • 정규표현식이란 문자열에서 특정 패턴(규칙)을 찾거나 바꾸거나 검증하기 위한 표현 방법입니다. 패턴이 맞는 문자열 하나만 맞추면 조건을 충족합니다.
  2. 코드에서
    m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val)
    을 확인할 수 있었습니다.
    • re.match(pattern, string) 은 pattern에 작성된 정규표현식과 string이 매치되는지 확인하는 함수입니다. 즉, 여기서 input_val 이 특정 정규표현식에 맞는지 검사하고 있습니다.
  3. r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+' 을 해석해보면,
    • dr : dr로 시작
    • \w{5,7} : 영문자/숫자/언더바 _ 가 5~7글자
    • e : e 문자 1개
    • \d+ : 숫자가 1개 이상
    • am@ : 문자 am@ 가 반드시 옴
    • [a-z]{3,7} : 소문자 3~7글자
    • . : . 문자
    • \w+ : 영문자/숫자/언더바 _ 가 1개 이상
      란 뜻입니다.
  4. 정규표현식을 만족하는 랜덤한 문자열 ,drabcdefe123am@abc.com 를 예시 입력값으로 생성할 수 있습니다.
    • dr : 그대로
    • abcdef : 6글자 → \w{5,7} 만족
    • e : e 문자 1개
    • 123 : 숫자
    • am@
    • abc : 3글자
    • .
    • com : \w+ 는 영문자/숫자/언더바 _ 가 1개 이상만 입력하면 되지만, 형식상 이메일임을 유추할 수 있고, 사이트 내에서도 이메일 형식으로 입력을 받기에 com을 입력해주었습니다.
  5. 성공적으로 플래그를 획득할 수 있었습니다.

배운점

  • 정규 표현식 이라는걸 알게 되었습니다. 주어진 패턴을 통해 맞는 문자열로 문제를 해결할 수 있음을 배웠습니다.
  • 정규 표현식에서 사용하는 문법에 대해서 배워볼 수 있었습니다.

Summary (English)

  • The challenge required input matching a regex to get the flag.
  • The regex pattern was: dr\w{5,7}e\d+am@[a-z]{3,7}.\w+.
  • It means:
    • starts with dr
    • 5–7 word chars
    • e, then digits
    • am@, then 3–7 lowercase letters
    • ., then word chars
  • Used input: drabcdefe123am@abc.com
  • This matched the pattern and returned the flag.
  • I practiced reading regex patterns and crafting valid inputs for CTF challenges.
profile
CTF 풀이 및 실습 중심 학습을 기록합니다.

0개의 댓글