정규식 표현 확인 요청
안녕하세요.
문제 소스 파일을 다운 받아서 우회해야 하는 구간을 확인 했습니다.
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 를 표시해서
당황스럽습니다.
이렇게 확인을 했는데요
Step 2 : Almost done... 부분이 나와줘야 될 거 같은데
Wrong nickname or pw 만 나와서...
어떤 부분을 놓치고 있는 걸까요?
#web
작성자 정보
답변
1
doridoriman
대표 업적 없음
정확한 답변이 아닐 수 있다는 점을 인지해주시면 감사하겠습니다.
/\d*@\d{2,3}(31)+[^0-8]!/
해당 정규식은 다음과 같이 시각화 될 수 있습니다.
"digit" "@" "digit" "digit" "31" "!0-8" "!"
digit @ 까지는 정규식에 맞춰서 작성하신 듯 하나, 뒤의 부분이 일치하지 않는 것 같습니다.