반응형

첫화면은 Password is ? 그리고 패스워드로 예측되는글자들이 빠르게 지나간다.

하나씩 쳐서 답을 완성해 볼까도 생각해 봤지만 빠르게 포기하고 소스를 보기로 했다.

소스를 보면 script로 처리하고 있는것을 볼수있다.

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


먼저 생소한 부분인 윗부분에 run( ) 함수는 Ajax를 위한 객체를 생성하는 함수이다. Ajax는 Asynchronous JavaScript and XML의 약자로, 자바스크립트를 이용하여 비동기적으로 서버와 브라우저가 데이터를 주고받는 방식이다. 이때, IE 6버전 이하는 ActiveXObject를 사용하고, IE 7버전 이상, 크롬과 같은 다른 웹브라우저는 XMLHttpRequest를 사용하여 객체를 생성한다.

이제 run()을 실행시키고 return된 값을 x에 담는다.

객체x를 통해 통신하고 그값을 받는거같다. answer함수는 get방식으로 통신하고 있으며 send는 매개변수를 전송하는데 get방식사용한다면 null로 설정하는게 맞을거같다.

그뒤 innerHTML을 통해 받아온 문자열을 출력하고 i를 늘려 다시 answer를 부르는 모습을 볼수 잇으며

더이상 responseText가 없을때 ?를 출력하고 종료한다.재귀를 부를때는 setTimeout을 이용해 0.02초의 term을 주며 통신하고 있다.

마지막줄에서 answer(0)부터 실행하고 있다. 이것역시 1초의 텀을 주며 실행하고 있다.

aview.innerHTML=x.responseText;이부분을 조금 변경하여 aview에 추가해 주는 방식으로 하고 마지막에 재귀를 멈추는 부분을 없애주면 Flag를 한눈에 볼수 있을거같다.

aview.innerHTML+=x.responseText;로 바꾸고

if(x.responseText=="") aview.innerHTML="?"; 이부분은 제거해준다.

Flag가 다나오고 auth창에 넣어주면 성공!




반응형

'보안 > webhacking' 카테고리의 다른 글

webhacking.kr old-56  (1) 2019.12.08
webhacking.kr old-55  (0) 2019.12.08
webhacking.kr old-53  (0) 2019.12.08
webhacking.kr old-50  (0) 2019.12.07
webhacking.kr old-49  (0) 2019.12.07
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기