정규식 표현 확인 요청

안녕하세요.
문제 소스 파일을 다운 받아서 우회해야 하는 구간을 확인 했습니다.

            if (preg_match("/[a-zA-Z]/", $input_pw)) {
              echo "alphabet in the pw :(";
            }
            else{
              $name = preg_replace("/nyang/i", "", $input_name);
              $pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);
              
              if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") {
                echo '<h4>Step 2 : Almost done...</h4><div class="door_box"><div class="door_black"></div><div class="door"><div class="door_cir"></div></div></div>';


이 부분 같은데요

아이디가 틀리든 패스워드가 틀리든 Wrong nickname or pw 를 표시하니까
어떤 부분이 틀린지 몰랐습니다.

검색을 해보니까
https://regexr.com/864cu

해당 사이트에서 정규식 표현이 맞는지 아닌지
확인할 수 있다고 해서 활용했습니다

preg_replace 함수 원형을 찾아보니까
해당 정규표현식이 나오면 그것을 1회 정해진 값으로 변형하는 거 같았습니다.

그래서

input1=dnyangnyang0310&input2=31%401313131319%21%2B1%2B13

이렇게 요청을 보냈었는데요
혹시 몰라서

input1=dnyangnyang0310&input2=31@1313131319!+1+13

이렇게도 둘 다 보냈는데 Wrong nickname or pw 를 표시해서

당황스럽습니다.

image.png

image.png

이렇게 확인을 했는데요
Step 2 : Almost done... 부분이 나와줘야 될 거 같은데
Wrong nickname or pw 만 나와서...

어떤 부분을 놓치고 있는 걸까요?

#web
작성자 정보
답변 1
doridoriman
대표 업적 없음

정확한 답변이 아닐 수 있다는 점을 인지해주시면 감사하겠습니다.

/\d*@\d{2,3}(31)+[^0-8]!/
해당 정규식은 다음과 같이 시각화 될 수 있습니다.
"digit" "@" "digit" "digit" "31" "!0-8" "!"

https://regexper.com/

digit @ 까지는 정규식에 맞춰서 작성하신 듯 하나, 뒤의 부분이 일치하지 않는 것 같습니다.

2024.09.20. 15:44
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기