첫 화면을 보니 nickname 창 comment창 code 창에 어떤 값을  처넣어야 하는 문제이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
function ck()
{
 
if(lv5frm.id.value=="") { lv5frm.id.focus(); return; }
if(lv5frm.cmt.value=="") { lv5frm.cmt.focus(); return; }
if(lv5frm.hack.value=="") { lv5frm.hack.focus(); return; }
if(lv5frm.hack.value!=lv5frm.attackme.value) { lv5frm.hack.focus(); return; }
 
lv5frm.submit();
 
}
</script>



여기서

nickname값이 없으면 다시 return

comment 또한 없으면 안되고

code값은 옆에 나와있는 값이어야 submit이 된다고 한다.

하지만 조건을 만족시켜도 안되는 것을 알 수 있었다.

그래서 보니 time:2가 있는 것을 알 수있었다.

아마 2분이나 2초 안에 해야하는 것 같다.

따라서 콘솔창에

lv5frm.id.value = "1"; lv5frm.cmt.value = "1"; lv5frm.hack.value = lv5frm.attackme.value;ck();

라고 치고 2초안에 해보니 성공!


20번도 클리어!!

'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 6번  (0) 2017.10.22
Webhacking.kr 4번  (0) 2017.10.22
Webhacking.kr 54번  (0) 2017.10.16
webhacking.kr 10번  (0) 2017.10.15
Webhacking.kr 12번  (0) 2017.09.24

첫 화면은 이렇게 빈화면이다가

?자리에 여러 숫자와 문자가 하나씩떴다가 사라지고

?만 남는다.

아마 그것들이 곧 비밀번호일 것 같다.

하지만 너무 빨리 지나가기 때문에 먼저 소스를 보았다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<html><head>
<title>Challenge 54</title>
</head>
<body>
<h1><b>Password is <font id="aview">?</font></b></h1>
<script>
function run(){
  if(window.ActiveXObject){
   try {
    return new ActiveXObject('Msxml2.XMLHTTP');
   } catch (e) {
    try {
     return new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e) {
     return null;
    }
   }
  }else if(window.XMLHttpRequest){
   return new XMLHttpRequest();
 
  }else{
   return null;
  }
 }
 
x=run();
 
function answer(i)
{
x.open('GET','?m='+i,false);
x.send(null);
aview.innerHTML=x.responseText;
i++;
if(x.responseText) setTimeout("answer("+i+")",100);
if(x.responseText=="") aview.innerHTML="?";
}
 
setTimeout("answer(0)",10000);
 
</script>
 
 
</body></html>




소스를 보니 answer 함수에서 

?m=값으로 넣어주면 안되게 되어 있다.

그리고 x.responseText값을 aview.innerHTML에 넣어주고

그 값을 출력시켜주는 것 같다.

그리고 이제 x.responseText값이 없어지니 그제서야 ?를 띄워주는 소스이다.

따라서 계속 지나가는 값을 다 출력시켜주면 될 것 같다.

따라서 콘솔창에서

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function run(){
  if(window.ActiveXObject){
   try {
    return new ActiveXObject('Msxml2.XMLHTTP');
   } catch (e) {
    try {
     return new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e) {
     return null;
    }
   }
  }else if(window.XMLHttpRequest){
   return new XMLHttpRequest();
 
  }else{
   return null;
  }
 }
 
x=run();
 
function answer(i)
{
x.open('GET','?m='+i,false);
x.send(null);
aview.innerHTML+=x.responseText;
i++;
if(x.responseText) setTimeout("answer("+i+")",100);
}
answer(0);




즉 aview.innerHTML += x.responseText로 고쳐주면

그 값이 출력 될 것이다.

그러면 답이 출력

54번 클리어!!

'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 4번  (0) 2017.10.22
Webhacking.kr 20번  (0) 2017.10.16
webhacking.kr 10번  (0) 2017.10.15
Webhacking.kr 12번  (0) 2017.09.24
Webhacking.kr 16번  (0) 2017.09.23


10번 문제를 들어가니 알수없는 이런 화면이 나왔다.

화면에서 읽을 수 있는 것은 O와 buy lotto이다

따라서 소스를 보았다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html><head>
<title>Challenge 10</title>
</head>
 
<body>
<hr style="height:100;background:brown;">
<table border="0" width="900" style="background:gray">
<tbody><tr><td>
<a id="hackme" style="position:relative;left:0;top:0" onclick="this.style.posLeft+=1;if(this.style.posLeft==800)this.href='?go='+this.style.posLeft" onmouseover="this.innerHTML='yOu'" onmouseout="this.innerHTML='O'">O</a><br>
<font style="position:relative;left:800;top:0" color="gold">|<br>|<br>|<br>|<br>buy lotto</font>
</td></tr>
</tbody></table>
<hr style="height:100;background:brown;">
</body></html>
cs

하지만 소스코드중 

onclick="this.style.posLeft+=1;if(this.style.posLeft==800)this.href='?go='+this.style.posLeft"

클릭하면 이동하는 소스가 실행이 안되어서 찾아보니

크롬에서는 실행이 안된다고 해서 익스플러어로 실행해 보니

클릭하면 한칸씩 옆으로 가는 것을 알 수 있었다.

그리고 800에 도달한다면 다른 값이 실행되는 것인데

한클릭에 1이 움직이므로 100으로 바꾸어 해 보았다.


 

그랬더니 클리어!












'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 20번  (0) 2017.10.16
Webhacking.kr 54번  (0) 2017.10.16
Webhacking.kr 12번  (0) 2017.09.24
Webhacking.kr 16번  (0) 2017.09.23
Webhacking.kr 14번  (0) 2017.09.23

javascript challenge!

자바스크립트 도전!

우선 소스를 보기로 한다.

WorkTimeFun=String.fromCharCode(118,97,114,32,101,110,99,111,61,39,39,59,13,10,118,97,114,32,101,110,99,111,50,61,49,50,54,59,13,10,118,97,114,32,101,110,99,111,51,61,51,51,59,13,10,118,97,114,32,99,107,61,100,111,99,117,109,101,110,116,46,85,82,76,46,115,117,98,115,116,114,40,100,111,99,117,109,101,110,116,46,85,82,76,46,105,110,100,101,120,79,102,40,39,61,39,41,41,59,13,10,32,13,10,32,13,10,102,111,114,40,105,61,49,59,105,60,49,50,50,59,105,43,43,41,13,10,123,13,10,101,110,99,111,61,101,110,99,111,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,105,44,48,41,59,13,10,125,13,10,32,13,10,102,117,110,99,116,105,111,110,32,101,110,99,111,95,40,120,41,13,10,123,13,10,114,101,116,117,114,110,32,101,110,99,111,46,99,104,97,114,67,111,100,101,65,116,40,120,41,59,13,10,125,13,10,32,13,10,105,102,40,99,107,61,61,34,61,34,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,52,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,51,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,49,57,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,54,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,48,48,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,48,52,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,50,50,50,45,50,41,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,95,40,49,57,56,41,41,43,34,126,126,126,126,126,126,34,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,50,41,43,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,110,99,111,51,41,41,13,10,123,13,10,97,108,101,114,116,40,34,80,97,115,115,119,111,114,100,32,105,115,32,34,43,99,107,46,114,101,112,108,97,99,101,40,34,61,34,44,34,34,41,41,59,13,10,125,13,10); eval(WorkTimeFun);

소스가 난독화 되어있는 모습을 볼 수 있다.

굉장히 보기 불편하다.

우선 eval(string) 는 자열로 넘어온 자바스크립트 구문을 실행하는데,

호출하는 위치와 방식에 따라 eval의 실행 컨텍스트와 범위(scope)가 달라진다.

그래서 우선 WorkTimeFun을 해독하기 위해서

크롬console 에 넣어보던지

javascript:document.write(WorkTimeFun)또는

javascripts:alert(WorkTimeFun)을 주소창에 쳐 보았다.


"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("=",""));

}

"

그랬더니 소스코드가 나왔다.

위의 소스에서 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)


를 콘솔에 넣어주면

답이 나온다!

'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 54번  (0) 2017.10.16
webhacking.kr 10번  (0) 2017.10.15
Webhacking.kr 16번  (0) 2017.09.23
Webhacking.kr 14번  (0) 2017.09.23
Webhacking.kr 17번  (0) 2017.09.14

시작 화면이 난감하게 별만 달랑있다.

따라서 또 소스코드를 보았다.

우선 소스에서

innerHTML : 특정요소를 가져오거나, 변경할때 사용

onkeypress : 내가 키를 눌렀을 때 동작

Math.floor : 소수값이 있을 때 소수값은 버려주는 함수

Math.random : 랜덤값을 뽑아준다

onmouseover : 해당 이벤트 영역에 마우스커서를 올리면 반응을 해준다

String.fromCharCode(): 받은 값을 유니코드에 해당되는 문자 or 문자열을 반화해 준다

location.href : 페이지를 이동시켜준다


일단 body안에서 html은 위에서 순차적으로 내려가면서 실행 하기 때문에 

body에서 처음 줄에서 kk()함수는 쓸 수 없지만 onload함수때문에 모든 구현이 다 끝난후 실행해 주기에 쓸 수있습니다.

먼저 kk(x,y)함수는 rndc의 값에 9000000보다 같거나 작은 숫자를 정해주고 그 값을 색깔로 해서

x,y좌표를 가지는 문장을 만들어 줍니다. 그리고 마우스를 대면 ' ' ,즉 지워지고 아니면 *을 만들어 줍니다.

또 mv(cd)함수는 먼저 kk함수를 불러오는데 star의 posletf값에서 50을 뺀 값과 posTop-50값을 x,y에 넣어줍니다.

이때 cd값에 따라 좌표가 바뀝니다.

하지만 cd 값은 124일 때 페이지를 이동시켜줍니다. 그리고 String.fromCharCode(cd)로 cd의 값을 유니코드 값으로 바꾸어 줍니다.

따라서 124를 만들어 주기 위해서는 '|'를 넣는다면 위치가 바뀔 것 입니다.

그러면 정답화면으로 넘어갑니다.

16번도 클리어!

'WebHacking > Webhacking.kr' 카테고리의 다른 글

webhacking.kr 10번  (0) 2017.10.15
Webhacking.kr 12번  (0) 2017.09.24
Webhacking.kr 14번  (0) 2017.09.23
Webhacking.kr 17번  (0) 2017.09.14
Webhacking.kr 15번  (0) 2017.09.14

일단 문제는 달란 input할수 있는 창하나 이다.

그래서 코드를 보았다.


저기서

ul = document.URL

ul = ul.indexOf(".kr")

ul = ul*30

이것을 해석하면 답을 찾을 수 있을 것 같았다.

우선 document,URL은 주소를 문장으로 받아서 저장하는 것이다.

또 indexOf는 괄호 안에 있는 문자가 몇번째에 있는지를 return 해 주는 함수이다.

따라서 

http://webhacking.kr/challenge/javascript/js1.html에서

.kr은 앞에서 부터 17번째에 있기 때문에 17이고 그 밑에 30을 곱해주기 때문에

답은 17*30인 510이다!

그것을 입력하면 Auth의 값을 알 수있다.

14번 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 12번  (0) 2017.09.24
Webhacking.kr 16번  (0) 2017.09.23
Webhacking.kr 17번  (0) 2017.09.14
Webhacking.kr 15번  (0) 2017.09.14
Webhacking.kr 2번  (0) 2017.09.10


17번을 켜면 이런 화면이 나온다.

너무 비어있어서 긁어보아도 아무것도 없다.

그래서 소스를 열어보았다.


그러니 unlock이라 되어있고 비밀번호가 나와있다.

하지만 굉장히 긴 식이어서 계산기에 복사해 계산해 보았다.



그랬더니 이런 숫자가 나왔다.

이 숫자를 넣으니 패스워드 99780930.7이라고 나온다.

이것을 auth에 flag로 넣어주니 해결되었다.

답을 줘서 쉽게 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 16번  (0) 2017.09.23
Webhacking.kr 14번  (0) 2017.09.23
Webhacking.kr 15번  (0) 2017.09.14
Webhacking.kr 2번  (0) 2017.09.10
Webhacking.kr 1번  (0) 2017.09.10



15번은 문제를 누르기만 하면 Access_Denied라는 창만 뜬다

그리고




잠깐 이 페이지가 켜졌다가 꺼진다.

그렇다 

password = off_script이다.

너무 어처구니가 없는 문제라 의외로 시간을 썼다.

15번 어처구니 없이 클리어!


'WebHacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 14번  (0) 2017.09.23
Webhacking.kr 17번  (0) 2017.09.14
Webhacking.kr 2번  (0) 2017.09.10
Webhacking.kr 1번  (0) 2017.09.10
webhacking 가입  (0) 2017.09.10

+ Recent posts