biny

[Beginner] phpreg 본문

Dreamhack_

[Beginner] phpreg

Jbiny 2023. 11. 14. 09:42

문제

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

 

필터링

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

ls 위치 확인
ls 결과

flag.txt

위치를 확인했다. 

cat 출력
cat 결과

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