문제에 처음 들어가면 바로 소스코드를 확인할 수 있는데, 다음과 같다.

스크린샷 2025-05-18 000623.png

이를 해석해보자면

  1. val_idval_pw를 base64로 20번 인코딩을 한 후 숫자를 모두 특수문자로 바꾸어 쿠키 값으로 저장한다.
  2. 쿠키의 user 와 password의 값의 특수문자를 숫자로 치환해 다시 base64로 디코딩을 20번 했을 때, 그 결과 값인 decode_iddecode_pw 가 각각 admin, nimda이면 문제를 해결할 수 있다.

문제 해결을 위해서 php과정의 역과정인 admin과 nimda를 base64로 20번 인코딩 한 뒤 숫자를 특수문자로 치환시켜 쿠키 값에 넣어주면 된다.

이를 위해 개발자도구의 콘솔 창에서 javascript 구문을 짜서 각각 실행 시키면 쿠키 값을 획득할 수 있다.

// admin 인코딩 및 치환
var a = 'admin';
for (var i = 0; i < 20; i++) {
    a = btoa(a);
}
a = a.replaceAll('1', '!');
a = a.replaceAll('2', '@');
a = a.replaceAll('3', '$');
a = a.replaceAll('4', '^');
a = a.replaceAll('5', '&');
a = a.replaceAll('6', '*');
a = a.replaceAll('7', '(');
a = a.replaceAll('8', ')');

// nimda 인코딩 및 치환
var a = 'nimda';
for (var i = 0; i < 20; i++) {
    a = btoa(a);
}
a = a.replaceAll('1', '!');
a = a.replaceAll('2', '@');
a = a.replaceAll('3', '$');
a = a.replaceAll('4', '^');
a = a.replaceAll('5', '&');
a = a.replaceAll('6', '*');
a = a.replaceAll('7', '(');
a = a.replaceAll('8', ')');

이렇게 생성된 쿠키 값을 각각 넣어주면 포인트를 획득할 수 있다.