Ye0ngJae

웹해킹 2차시 과제 본문

Layer7

웹해킹 2차시 과제

Ye0ngJae 2022. 5. 8. 18:33
728x90
let maxLen=120;
function printBox(b,c){
  b.title||(b.title="");
  b.titleColor||(b.titleColor="\\x1b[33m");
  b.boxColor||(b.boxColor="");
  b.bgColor||(b.bgColor="");
  b.fgColor||(b.fgColor="");
  let header=`${b.bgColor}${b.boxColor}┎─\\x1b[0m`;
  header+=`${b.bgColor}${b.titleColor}${b.title}\\x1b[0m`;
  header+=`${b.bgColor}${b.boxColor}${"─".repeat(maxLen-size(b.title||""))}─┒\\x1b[0m`;
  console.log(header);
  for(let line of lines){
    let count=maxLen-size(line.map(x=>tostr(x)).map(x=>x.replace(/\\x1b\\[[0-9]*m/g,\'\')).join(\' \'))-1;
    let bodyHead=`${b.bgColor}${b.boxColor}┃\\x1b[0m${b.bgColor}${b.fgColor}`;
    let bodyTail=`${b.bgColor}${b.boxColor}${\' \'.repeat(count)}┃\\x1b[0m`;
    console.log(bodyHead,...line,bodyTail)}let footer=`${b.bgColor}${b.boxColor}┖─${"─".repeat(maxLen)}─┚\\x1b[0m`;
    console.log(footer);
  function tostr(a){
    if(typeof a==\'object\')
    return JSON.stringify(a)+" ";
    return a.toString()}function size(a){let len=a.length;
      for(let i=0;i<a.length;i++)
      if(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/.test(a[i]))
      len+=1;return len
    }
  }

힌트 공개 전까지 풀 엄두를 못 내다가 힌트가 업로드된 이후 eval에 관한 위험성에 대한 힌트를 보고서 console.log를 이용하여 난독화된 javascript코드를 위 코드로 변환하였다. 코드 중간에 이상한 낱말이 보여 해당 문제를 풀어보려고 알아봤던 여러 가지 정보 중 Packer가 Base62 Encode 한다는 점을 이용하여 Base62 Decode를 해보려 했으나 결과 값이 비정상적으로 나와 위 코드에서 추가적으로 난독화를 푸는 법을 찾지를 못하였다. 

 

이번 문제에 대해서 동아리 시간 이후로 해설을 한다면 해당 해설을 통해서 다시 접근해 보아야 할 것 같고, 만일 따로 해설 시간이 없다면 개인적으로 해설을 부탁드려 다시 문제를 풀어보는 것이 좋을 것 같다.

728x90

'Layer7' 카테고리의 다른 글

리버싱 4차시 과제 - prob1 문제 풀이  (0) 2022.07.27
리버싱 3차시 과제  (0) 2022.07.24
리버싱 2차시 과제  (0) 2022.07.19
[하드웨어] Layer7 - 과제  (0) 2022.06.18
하드웨어 1차시 - 과제  (0) 2022.06.02