CTF WriteUp
[ImaginaryCTF 2022] rooCookie
kevin3709
2022. 7. 16. 21:42
web이라기보단 코딩 문제였다.
문제 페이지에 들어가보면 귀여운 판다(?) 가 쿠키를 먹고 있다.
function createToken(text) {
let encrypted = "";
for (let i = 0; i < text.length; i++) {
encrypted += ((text[i].charCodeAt(0)-43+1337) >> 0).toString(2)
}
document.cookie = encrypted
}
document.cookie = "token=..."
문제 소스코드를 보면 token을 만드는 함수와 token값을 알려준다.
이를 복호화하면 될 것 같다.
function dec(){
tok = "10110000011,10110000001,10101110011,10110000000,10101111100,10101101111,10101111011,
10101110011,10101001011,10100110000,10110000000,10101111101,10101111101,10100110000,
10100101110,10100110100,10100101110,10101111110,10101101111,10110000001,10110000001,
10110000101,10101111101,10110000000,10101110010,10101001011,10100110000,10101110111,
10101110001,10110000010,10101110100,10110001001,10101110110,10100111110,10101111110,
10101000001,10101101101,10101000101,10101110110,10101101111,10101000101,10101101101,
10110000101,10101101111,10101000011,10101111100,10101000101,10101101101,10110000010,
10100111110,10100111110,10101101101,10101110000,10101000010,10101110010,10110001011,
10100110000";
flag = "";
const arr = tok.split(",");
for (let i=0; i<57; i++){
flag += String.fromCharCode(parseInt(arr[i], 2)-1337+43);
}
console.log(flag);
}
(("A".charCodeAt(0)-43+1337) >> 0).toString(2) 을 실행시켜 봤을때 11자리가 나와서 python으로 주어진 token을
11자리씩 파싱해서 사용했다.
함수를 실행시키면 FLAG가 출력된다.