Season 1/워게임 Old - 12 Write Up 작성자 - LRTK Js challenge라고 하니, 개발자 코드로 살펴봤다. ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\';… 엄청 많은 이모티콘으로 난독화된 JS를 볼 수 있었다. 이를 통해 JS 이모티콘 난독화를 검색해봤다.그 결과 자바스크립트 난독화Javascript Obfuscation 개념과 서비스 웹 페이지 :: 컴퓨터를 다루다 블로그 글을 찾을 수 있었는데, 문제의 JS는 일본 이모티콘 난독화라는 것을 알 수 있었다. 블로그엔 난독화 인코딩 사이트만 있어서, 디코딩을 위해 다시 검색을 하였다. aadecode - Decode encoded-as-aaencode JavaScript program. ‘_’ 사이트의 이름이 aaencode demo라고 했으니, 이를 통해 aadecode라고 검색하니 찾을 수 있었다. var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i<122;i++){ enco=enco+String.fromCharCode(i,0); } function enco_(x){ return enco.charCodeAt(x); } if( ck=="=" + String.fromCharCode(enco_(240)) + String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232)) + String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226)) + String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204)) + String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198)) + "~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3)) { location.href="./"+ck.replace("=","")+".php"; } 난독화를 하는 위와 같은 코드가 나온다. 코드를 살펴보니, 가장 중요한 것은 Flag를 획득할 수 있는 if문이다. fromCharCode 함수가 어떤 함수인지 알기위해 String.fromCharCode() - JavaScript | MDN을 참고하였다. UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환하는 함수라고 한다. 65 -> A로 변환하는 함수인데, if문을 보면 여러 fromCharCode 함수가 있는 것을 변환하여 서버에 요청하면 될 듯하다. 필요한 코드들만 사용하여 flag를 얻을 수 있는 페이지를 찾을 수 있었다. Flag를 획득할 수 있었다. 공유하기 게시글 관리 MSS 'Season 1 > 워게임' 카테고리의 다른 글 [dreamhack] pathtraversal 문제풀이 (0) 2021.05.19 suninatas/웹/1번 문제풀이 (0) 2021.05.19 Old - 10 Write Up (0) 2021.05.19 Old - 61 Write Up (0) 2021.05.17 Old - 59 Write Up (0) 2021.05.17 Contents 당신이 좋아할만한 콘텐츠 [dreamhack] pathtraversal 문제풀이 2021.05.19 suninatas/웹/1번 문제풀이 2021.05.19 Old - 10 Write Up 2021.05.19 Old - 61 Write Up 2021.05.17 댓글 0 + 이전 댓글 더보기