본문 바로가기

CTF

[picoCTF-Web Exploitation]Bookmarklet

<문제>

뭔가를 출력하여 flag를 확인할 수 있는 것 같다.

 

<풀이>

Instance를 생성하고 문제에 있는 Browse here를 클릭하여 Instance를 실행한다.

열린 페이지에서 이런 문구가 보인다.

bookmarklet이 주어지는데 자바스크립트 코드로 보인다.

 

        javascript:(function() {
            var encryptedFlag = "àÒÆަȬë٣֖ÓÚåÛÑ¢ÕӜÒËɧœ©™í";
            var key = "picoctf";
            var decryptedFlag = "";
            for (var i = 0; i < encryptedFlag.length; i++) {
                decryptedFlag += String.fromCharCode((encryptedFlag.charCodeAt(i) - key.charCodeAt(i % key.length) + 256) % 256);
            }
            alert(decryptedFlag);
        })();

전체 코드는 위와 같다.

flag가 암호화된 문자열 encryptedFlag 형태로 선언되어 있고,

picoctf를 키로 하여 flag를 복호화하는 반복문 코드를 확인할 수 있다.

마지막에 복호화된 flag를 alert창으로 띄워준다.

 

F12 단축키로 개발자 도구를 열고

console 탭으로 들어가서 주어진 코드 전체를 붙여넣었다.

 

코드를 실행하자 alert창으로 flag가 출력되었다.