본문 바로가기
Webhacking.kr

[Webhacking.kr] old-54 풀이

by ris 2024. 12. 14.

이번 문제는 개발자 모드의 콘솔 기능을 알지 못하면 풀 수 없는 문제였습니다.

 

우선 들어가면 Password is 라는 문구와 함께 많은 문자들이 빠른 시간 내에 교체되곤 마지막엔 ?만이 남습니다.

 

개발자 모드로 소스를 보면

 

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);

 

대충 이런 코드가 나옵니다. (중요한 부분만)

 

해석해보자면 ActiveXObject는 예전 internet explorer 에서 사용되던 HTTP 요청 방식이고 XMLHttpRequest는 최신 브라우저에서 사용되는 객체입니다.

그리고 이를 통해 통신하며 x는 위의 두 객체를 담는데에 사용됩니다.

 

answer 함수에는 GET 방식의 통신으로 m이라는 파라미터에 값을 넣어 보냅니다. false는 동기식 방식을 한다는 의미입니다. (이 코드 실행하기 전에는 다른 코드 실행 x)

 

받은 값을 aview의 값으로 대체합니다.

aview의 내부 값이 존재한다면 다음 값을, 없다면 ?를 띄웁니다.

 

그럼 이제 풀이를 해보겠습니다.

 

우선 저희는 flag를 알아야합니다.

그리고 이 flag는 한 글자씩만 나옵니다.

그럼 그 글자들을 더해주면 되겠죠?

이걸 손수하자니 귀찮고, 그럼 자동으로 해보죠.

 

이때 개발자모드 콘솔이 사용됩니다.

콘솔(console)에서는 javascript를 사용할 수 있습니다.

그리고 이를 통해 DOM과 css를 수정할 수 있죠.

그럼 바로 실행해보죠.

 

소스의 코드 중 

aview.innerHTML=x.responseText;

 

이 부분만 +=로 고쳐주고 조금만 손보면 flag가 화면에 나옵니다.

 

필자가 사용한 코드

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+")",10);
}
setTimeout("answer(0)",1000);

 

그리고 이 FLAG를 Webhacking.kr의 웹사이트 상단 Auth에 들어가서 입력하면 풀이 완료.

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

[Webhacking.kr] old 20 해설  (0) 2025.01.04
[Webhacking.kr] old-39 풀이  (0) 2024.12.29
[Webhacking.kr] old-38 풀이  (1) 2024.12.15
[Webhacking.kr] old-24 풀이  (0) 2024.12.14
[Webhacking.kr] old-01 풀이  (0) 2024.12.14