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가 출력된다.