password라는 파라미터에 들어가는 것을 보니 어떠한 비밀번호를 입력해야 한다는 것을 예상해봅니다.
응답 값을 확인했더니..
힌트가 나왔습니다. 힌트 이용을 위해 패스워드 파라미터에 넣어봤습니다.
하지만 응답 값 및 페이지 내 아무런 변화가 없는 걸로 보아 비밀번호가 아닌 것 같습니다...
스크립트 구문중 의심 가는 구문 분석이 필요해 보입니다.
스크립트 구문 내 코드를 보면 알아보기 힘든 구문으로 이루어져 있는 것을 볼 수 있습니다.
알아보기 힘든 구문으로 되어있는 것을 보고 난독화가 되어있을 것이라고 생각하여 난독화를 풀어보았습니다.
document.getElementsByClassName = function (a) { var b = new Array(); var c = document.getElementsByTagName("*"); for (var i = 0; i < c.length; i++) { if (c[i].className.indexOf(" ") >= 0) { var d = c[i].className.split(" "); for (var j = 0; j < d.length; j++) { if (d[j] == a) { b.push(c[i]) } } } else if (c[i].className == a) { b.push(c[i]) } } return b }
난독화를 풀어주는 사이트를 통해 풀어보았더니 코드가 이상하게 풀렸습니다;;..
응답 값 내 eval 함수 대신 document.write()함수를 이용하여 난독화를 풀어 보았습니다.
var digitArray=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
function PASS(n)
{var result='';var start=true;
for(var i=32;i>0;)
{i-=4;
var digit=(n>>i)&0xf;
if(!start||digit!=0)
{start=false;result+=digitArray[digit]}
}
return(result==''?'0':result)}
나온 코드를 보니
힌트에서 나온 12342046413275659 값을 넣어주면 PASS 값을 리턴해주는 것 같다.
패스워드 값을 입력하는 곳에 PASS(힌트 값)을 넣어 리턴 값을 받아 보았다.
9c43c20c 값이 나왔으며 체크해본 결과....
키값을 받았다.
이번 건 혼자 해결해보려고 하다가 너무 오랜 시간이 걸렸다;; 모를 땐 조금씩 도움을 받긴 해야겠다