본문 바로가기

wargame/WEBHACKING.kr

[WEBHACKING.kr]12

12

자바스크립트 문제다



바로 소스코드를 확인하였다



String.fromcharcode가 유니코드나 아스키코드를 문자로 바꾸는 함수기 때문에 괄호안의 코드를 바꿔보았다.

var enco='';
var enco2=126;
var enco3=33;
var ck=document.URL.substr(document.URL.indexOf('=')); /*현재 페이지의 URL의 일부를 추출한다. 이 때 URL의 =가 나타나는 인덱스부터 추출한다.*/

for(i=1;i<122;i++) { /*1부터 122의 아스키코드에 해당하는 문자를 enco 변수에 추가한다*/
  enco=enco+String.fromCharCode(i,0);
}

function enco_(x) { /*enco_함수를 정의한다*/
  return enco.charCodeAt(x); /*enco를 아스키코드로 변환한다*/
}

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)) {
/*만약 ck가 "=(해석된 값)"과 같다면*/
  alert("Password is "+ck.replace("=","")); /*"Password is "+ck에 =를 제거한 값을 출력한다*/
}



한 번 실행해서 어떻게 되는지 파악하려고 해보았다. if문을 개발자도구로 출력하였다.



밑의 if문도 해석하기 어려울 거 같아서 출력하였다. 비밀번호를 획득하였다!


생각해보니 자바스크립트 전부 출력해도 될 거 같아서 개발자도구로 실행해보았다. 실행하면 eval(WorkTimeFun) 함수도 실행되어 WorkTimeFun에 저장되어 있던 코드들까지 실행되면서 경고창으로 비밀번호가 출력된다


비밀번호를 challange-auth에 입력하였다



'wargame > WEBHACKING.kr' 카테고리의 다른 글

[WEBHACKING.kr]20  (0) 2019.05.13
[WEBHACKING.kr]14  (0) 2019.05.06
[WEBHACKING.kr]8 - fail  (0) 2019.05.06
[WEBHACKING.kr]10  (0) 2019.04.29
[WEBHACKING.kr]6  (0) 2019.04.29