문제풀이

[Dreamhack] ex-reg-ex 문제풀이

suuuullloc 2024. 1. 10. 04:52

# 문제링크 : https://dreamhack.io/wargame/challenges/834

 

ex-reg-ex

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

dreamhack.io


 

문제 파일

 

웹페이지

흠... 웹페이지가 뭘 의미하는지 잘 모르겠다. 파이썬 코드부터 봐보자.

 

코드가 그렇게 길지 않다. 살펴보면 flag.txt 파일을 불러와서 읽으려고 시도한다. 그리고 입력받은 값을 가져오는 것 같은데 그 값이 m이랑 일치하면 flag를 불러오는 식인 거 같다. m은 'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+'이라고 한다. 이게 뭘 의미하는 걸까 생각해봤는데 드림핵 페이지 힌트를 살펴보면 정규표현식에 관한 문제라고 한다.

 

정규표현식은 프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 정규표현식은 엄청 다양한데 이에 대해서는 개인적인 공부가 필연적인 것 같다. 난 https://gungadinn.github.io/data/2019/07/14/RegularExpression/

 

정규표현식 (Regular Expression) · 공부를 합시다

정규표현식 (Regular Expression) 14 Jul 2019 | 데이터 파이썬 공식 문서 + wikidocs 정규표현식 메타 문자 : 원래 그 문자가 가진 뜻이 아닌 __특별한 용도__로 사용하는 문자 . ^ $ * + ? { } [ ] \ | ( ) . : Dot(.) 메

gungadinn.github.io

이 사이트를 참고해서 공부했다.

 

아무튼 정규표현식을 공부한 후 dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+를 해석해보면 다음과 같다.

  • dr: 문자열이 "dr"로 시작
  • \w{5,7}: 5에서 7개의 워드 문자 (알파벳, 숫자, 밑줄)가 나오는 부분
  • e\d+: 문자열에 "e"가 나오고 그 뒤에 하나 이상의 숫자가 나오는 부분
  • am@: 문자열에 "am@"이 나오는 부분
  • [a-z]{3,7}: 3에서 7개의 소문자 알파벳이 나오는 부분
  • \.\w+: 마지막에는 점 (.)과 하나 이상의 워드 문자가 나오는 부분

위 법칙을 따라서 문자열을 만들어보자.

dr123456e7am@email.com 정도가 될 수 있겠다. 이 문자열을 홈페이지에 넣어보자.

 

넣기 전에 틀린 문자열을 넣으면 어떻게 되는지 궁금해서 아무거나 넣어보았다.

이렇게 뜬다. 이제 만든 문자열을 넣어보자.

 

문자열을 넣어봤더니 flag값이 떴다.

 

문제 해결!