biny
[Beginner] phpreg 본문

STEP 1

소스코드를 보면 name과 pw가 노출되어 있다.
name = "dnyang0310"
pw = "d4y0r50ng+1+13"
이면 step2로 넘어갈 수 있다.
하지만 pw필터링때문에 실패한다
구글링을 통한 해석은 다음과 같다
1. $name = preg_replace("/nyang/i", "", $input_name);
정규식 패턴뒤에 i가 붙어있으므로 대소문자를 구분하지 않고, "nyang" 문자를 빈문자열로 대한다
따라서 'dnyang0310' 이 나와야 하므로 "nyang" 문자열 사이에 해당 문자를 한번 더 집어넣어 "nyanyangng" 와 같은
문자열을 입력한다. 최종적으로 "dnyanyangng0310" 을 집어넣으면 된다.
2. $pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8]\!/", "d4y0r50ng", $input_pw);
우선 위 구문에 나와있는것 처럼 pw에는 알파벳이 있으면 안된다.
하지만 우리가 최종적으로 나와야 하는 결과 값은 "d4y0r50ng113" 이므로 정규표현식으로 통하여 치환시켜주면 된다.
1. \d : 0개 이상의 숫자를 매치
2. \@ : "@" 문자를 매치
3. \d{2,3} : 2개 또는 3개의 숫자를 매치
4. (31)+ : "31"문자열이 한번 이상 반복
5. [^0-8] : 0부터 8사이의 숫자를 제외한 문자 매치
6. \! : "!" 문자를 매치
위와 같은 조건을 만족하는 값을 넣을시 "d4t0r50ng" 값을 치환해줍니다.
따라서 위의 조건에 맞는 "1@43319!+1+13" 을 입력하여주면 "d4t0r50ng+1+13" 으로 치환하여 준다.
name = " dnyanyangng0310"
pw = "1@43319!+1+13"

STEP2

이 또한 필터리이 걸려있기에 필터링을 피해 명령어를 작성해준다.


flag.txt
위치를 확인했다.


DH{ad866c64dabaf30136e22d3de2980d24c4da617b9d706f81d10a1bc97d0ab6f6}
'Dreamhack_' 카테고리의 다른 글
| [LEVEL 1] baby-union (0) | 2023.11.16 |
|---|---|
| [LEVEL 1] simple_sqli_chatgpt (0) | 2023.11.14 |
| [LEVEL 2] xss-2 (0) | 2023.11.06 |
| [LEVEL 1] session-basic (0) | 2023.11.06 |
| [Beginner] devtools-sources (0) | 2023.10.05 |