http://webhacking.kr/challenge/codeing/code3.html
링크로 들어가니 검은화면에 하얀글씨만 떠있습니다.
자바스크립트 문제는 여기서 처음푸는데 이 문제는 그다지 어렵지 않습니다.
먼저 페이지 소스 보기를 합니다.
WorkTimeFun이라는 곳에 String.fromCharCode 블라블라가 들어가고, 나중에 WorkTimeFun이 eval에 의해 실행되군요.
그럼 저 이상한 블라블라를 먼저 풀어봐야겠죠. 크롬 브라우저나 파이어폭스 등을 사용하고 계시다면 개발자도구(F12)의 콘솔에서 쉽게 자바스크립트 코딩이 가능합니다.
저는 크롬 개발자도구의 콘솔에서 입력했더니 아래처럼 나왔습니다.
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))
{
alert("Password is "+ck.replace("=",""));
}
여러가지가 뜨는군요. 대충 해석하자면, 변수 enco에 1부터 121까지 문자유니코드를 더해서 저장합니다.
그 출력결과는 아래와 같습니다.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
그다음 함수 enco_()는 이제 int형 숫자를 가져와서 원래있던 enco에서 골라 문자열로 출력합니다.
ck가 위의 문자열과 일치할 때, =를 뺀 문자열이 비밀번호가 되겠군요.
그럼 자바스크립트를 작성해보겠습니다.
if문의 위까지는 개별적인 코드들이니 복붙하여 입력해둡니다.
그리고 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에 함수를 거친 데이터들이 저장될 것입니다.
답은 이렇게 출력됩니다.
ck.replace("=","")
마지막으로 치환을 거치면 답이 나옵니다.
이 답을 Auth에 입력하면 클리어
'워게임 > 웹해킹kr' 카테고리의 다른 글
웹해킹kr 38번 문제 풀이 (0) | 2016.05.24 |
---|---|
웹해킹kr 54번 문제 풀이 (0) | 2016.05.23 |
웹해킹kr 28번 문제 풀이 (0) | 2016.05.23 |
웹해킹kr 11번 문제 풀이 (0) | 2016.05.03 |
웹해킹kr 33번 문제 풀이 (0) | 2016.05.03 |