본문 바로가기

드림핵

[드림핵 워게임] ex-reg-ex

<문제>

 

 

<풀이>

1. 사이트 및 코드 확인

문제 사이트에 접속하면 처음으로 보이는 페이지다.

입력란이 있고, 그 아래에 Input 값과 Flag를 출력하는 박스가 있다.

 

입력란에 임의로 'a'를 입력했더니 위와 같은 결과가 나왔다.

 

def index():
    input_val = ""
    if request.method == "POST":
        input_val = request.form.get("input_val", "")
        m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val)
        if m:
            return render_template("index.html", pre_txt=input_val, flag=FLAG)
    return render_template("index.html", pre_txt=input_val, flag='?')

코드를 확인해보면 입력한 값이 'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+' 라는 정규표현식과 일치하면

flag에 FLAG 값을 return하고 정규표현식과 같지 않으면 flag에 ?를 return 하는 것을 확인할 수 있다.

 

 

2. 페이로드 생성

'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+'

 

위의 정규표현식을 해석해보면,

dr : 문자 "dr"

/w{5,7} : 5자 이상 7자 이하의 알파벳 또는 숫자

e : 문자 "e"

/d+ : 1개 이상의 숫자

am : 문자 "am"

@ : 문자 "@"

[a-z]{3,7} : 3자 이상 7자 이하의 소문자 알파벳

\. : 문자 "."

/w+ : 1개 이상의 알파벳 또는 숫자

 

해석한 정규표현식을 만족하는 문자열로는

dr12345e123am@example.com

dr11111e1am@inter.com

등이 있다.

 

3. FLAG 획득

페이로드를 입력했다.

 

FLAG가 출력되었다.