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를 획득할 수 있었다.

'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

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.