슈포스/워게임

[web]Dreamhack_ex-reg-ex

haerim9.9 2024. 11. 19. 19:26

문제 설명

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

플래그 형식은 DH{...} 입니다.


 

사이트에 들어가면 어떠한 값을 입력했을 때, Flag가 나오는 것을 확인할 수 있다. f12로 확인해 봤지만 딱히 볼만한 것은 없었다.

 

그래서 코드를 살펴보았다.

잘은 모르겠지만 입력받은 값이 input_val이고, 그 값과 m을 비교하는 것 같았다. re.match()에 관해서는 잘 몰라서 풀면서 검색을 해봤고, 자세한 설명은 아래에 정리해뒀다.

input_val의 문자열이 re.match()의 조건과 일치해야 하는 것 같았는데, 그 조건만 맞춰서 입력하면 플래그 값이 나오는 것으로 보였다.

 

그래서 조건에만 맞춰서 'dreeeeeeee11am@aaaaaaa.e+'와 같은 문자열을 사이트에 입력했다.

 

 

 

그랬더니 플래그 값이 나왔다.

 


 

re.match()에 관해서

더보기

re = 정규표현식

*정규표현식 : 특정 패턴에 상응하는 문자열을 검색, 치환, 제거하는 기능을 가짐.

 

기본패턴은 다양한데, 해당 문제에서 쓰인 것만 정리해봤다. 자세한 것은 검색하는 것을 추천한다.

re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val)

 

  • r : 문자열 앞에 r이 붙으면 해당 문자열이 구성된 그대로 문자열로 반환한다. 아래는 예시이다. \n을 문자열 그대로 반환하는 것을 볼 수 있다.
b = r'abcdef\n'
print(b)
abcdef\n

 

  • \w : 문자[a-zA-Z0-9]와 일치
  • \d : 숫자[0-9]와 일치
  • + : 직전의 패턴을 1회 이상 반복(문제에서는 +앞에 \d가 쓰였으니 \d)
  • [a-f] : 문자 사이에 속하는 문자 중 하나를 의미(a부터 f까지, 숫자[0-9]도 마찬가지임)
  • {3,7} : 해당 숫자만큼 반복(3회부터 7회까지)
  • \ : 기능 제거(문제에서 \.은 온점을 '.'으로 문자열 취급함)

match : 문자열의 시작부터 비교하여 패턴이 있는지 확인한다. (문제에서의 r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+' 패턴과 입력한 input_val를 비교한 것)


 

개인 공부 목적으로 작성된 글이며, 틀린 정보나 해석이 있을 수 있음.

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

 

ex-reg-ex

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

dreamhack.io

 

'슈포스 > 워게임' 카테고리의 다른 글

[web]SuNiNaTas_01  (0) 2024.11.26
[misc]Dreamhack_dreamhack-tools-cyberchef  (0) 2024.11.26
[misc]Dreamhack_baby-linux  (1) 2024.11.19
[web]Dreamhack_command-injection-1  (0) 2024.11.12
[misc]Dreamhack_Exercise: Docker  (2) 2024.11.11