Kilkat

[dreamhack] Secure Mail 본문

Security/reverse engineering

[dreamhack] Secure Mail

KimKwangWoon 2025. 2. 9. 21:52

문제 설명을 확인해보면 6자리의 숫자로 이루어진 보안 메일을 해결하면 Flag를 획득할 수 있을 것으로 예상됨

 

secure-mail.html 브라우저로 열어서 확인해보면 최대 6자리의 비밀번호를 검증하는 로직으로 구성된 것을 확인할 수 있음

 

vscode로 secure-mail.html 열어서 코드를 확인해보면 onclick에 존재하는 _0x9a220 function이 존재하는데, 내용은 난독화 되어 있어서 확인이 힘듦

따라서 6자리 숫자로 이루어진 비밀번호 조합을 brute force하여 Flag를 획득하는 방법으로 진행함

 

(function bruteForceBirthdayPassword() {
  let foundPassword = false;
  const startYear = 1990;
  const endYear = 2025;

  window.alert = function (msg) {
    if (msg !== 'Wrong') {
      console.log(`비밀번호를 찾았습니다! 메시지: ${msg}`);
      foundPassword = true;
      throw new Error(`브루트포싱 완료: ${msg}`);
    }
  };

  function tryBrute(pwd) {
    document.querySelector('#pass').value = pwd;
    document.querySelector('button').click();
  }

  function isValidDate(year, month, day) {
    const date = new Date(year, month - 1, day);
    return (
      date.getFullYear() === year &&
      date.getMonth() + 1 === month &&
      date.getDate() === day
    );
  }

  try {
    for (let year = startYear; year <= endYear; year++) {
      const shortYear = year % 100;
      for (let month = 1; month <= 12; month++) {
        for (let day = 1; day <= 31; day++) {
          if (foundPassword) break;
          if (!isValidDate(year, month, day)) continue;

          const password = `${shortYear.toString().padStart(2, '0')}${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}`;
          console.log(`시도 중... 비밀번호: ${password}`);
          tryBrute(password);
        }
        if (foundPassword) break;
      }
      if (foundPassword) break;
    }
  } catch (e) {
    console.log(e.message);
  }
})();

핵심은 YYMMDD로 이루어진 형식으로 brute force가 진행되어야 하고, 비밀번호가 틀리는 경우 팝업되는 alert가 무시되어야 하며, 조건에 맞는 비밀번호가 입력될 시 brute force가 멈추고 해당 값이 반환되어야 함

 

성공!

'Security > reverse engineering' 카테고리의 다른 글

[dreamhack] Simple Patch Me  (0) 2025.02.10
[dreamhack] Inject ME!!!  (1) 2025.02.09
[dreamhack] rev-basic-6  (0) 2024.12.25
[dreamhack] rev-basic-4  (0) 2024.12.25
[dreamhack] rev-basic-3  (0) 2024.12.10
Comments