ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-54
    Wargame/Webhacking.kr 2021. 12. 27. 18:17

    old-54

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

     

    run() 함수를 먼저 살펴보면,

    function run(){
      if(window.ActiveXObject){  브라우저가 IE일 경우 XMLHttpRequest 객체 구하기
       try {
        return new ActiveXObject('Msxml2.XMLHTTP');
       } catch (e) {  // 예외 처리
        try {
         return new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) {
         return null;
        }
       }
      }else if(window.XMLHttpRequest){  // IE 외의 브라우저에서 XMLHttpRequest 객체 구하기
       return new XMLHttpRequest();  // XMLHttpRequest() 객체 생성
     
      }else{
       return null;
      }
    }

     

    answer() 함수를 살펴보면

    function answer(i){
      // 새로 생성된 요청을 초기화하거나 기존 요청을 다시 초기화한다.
      x.open('GET','?m='+i,false);  // ./?m=i에 GET 방식으로 HTTP 요청하고, send() 응답을 받을 때까지 메서드가 반환되지 않는다(동기적으로 처리).
      x.send(null);  // 요청을 서버로 보낸다.
      aview.innerHTML=x.responseText;  // 요청을 보낸 후 서버에서 받은 텍스트를 반환한다.
      i++;
      // setTimeout() : 만료된 후 함수나 지정한 코드를 실행하는 타이머를 설정
      if(x.responseText) setTimeout("answer("+i+")",20);
      if(x.responseText=="") aview.innerHTML="?";
    }

     

    한 글자씩 나오므로 개발자 도구 Sources 탭을 사용하여

    Breakpoints를 사용하면 FLAG를 구할 수 있다.

    "aview.innerHTML=x.responseText;" 부분에 중단점을 설정하면 한 글자씩 출력하게 된다.

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

    <Webhacking.kr> old-42  (0) 2021.12.30
    <Webhacking.kr> old-59  (0) 2021.12.28
    <Webhacking.kr> old-39  (0) 2021.12.27
    <Webhacking.kr> old-28  (0) 2021.12.25
    <Webhacking.kr> old-29  (0) 2021.12.21
Designed by Tistory.