본문 바로가기

Wargame/webhacking.kr

[Webhacking.kr] old-54

 

 

물음표 자리에서 숫자가 굉장히... 빠르게 바뀝니다... 이게 flag라면 화면 녹화하고 0.1배속 걸고 싶을 정도로...........

 

일단 페이지 소스 보기를 해봅니다.

 

<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+")",20);
  if(x.responseText=="") aview.innerHTML="?";
}
setTimeout("answer(0)",1000);
</script>
</body>
</html>

 

서버에서 ?m=0,1,2,... 로 요청을 보내면 비밀번호를 한 글자씩 돌려주고, 빈 문자열이 되면 끝납니다.

 

그런데 aview.innerHTML = x.responseText; 로 덮어쓰기만 해서 이전 글씨들이 다 사라지고 마지막엔 ? 만 남게 됩니다.

 

비밀번호가 나오는 속도를 느리게 해서 한 글자씩 받아 쓸까도 생각해보았으나...

한 번에 출력할 수 있는 방법이 있을 것 같으니 패스.

 

 

aview.innerHTML=x.responseText;

 

위의 코드를 아래와 같이 수정하면 이전 글씨를 덮어쓰며 한 글자씩 나오는 게 아니라,

글씨가 누적되어서 문장이 되게 만들 수 있을 것 같습니다.

 

aview.innerHTML+=x.responseText; 

 

개발자 모드(F12) 실행 후 Console 창에 다음 코드를 붙여넣으면

function answer(i){
  x.open('GET','?m='+i,false);
  x.send(null);
  if (x.responseText) {
    aview.innerHTML += x.responseText;
    setTimeout(() => answer(i+1), 20);
  }
}
answer(0);

 

 

Password is ?FLAG{a7981201c48d0ece288afd01ca43c55b}

 

'Wargame > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-17  (0) 2025.08.10
[Webhacking.kr] old-01  (0) 2025.08.10
[Webhacking.kr] old-14  (0) 2025.08.09
[Webhacking.kr] old-15  (2) 2025.08.09
webhacking.kr 43번  (0) 2022.11.21