처음 접속하면 패스워드가 막 이리저리 바뀌다가 ?에서 멈추게 된다.
그럼 일단 소스코드를 확인해주자
일단 run()함수에 대한 부분은 복잡하니 answer함수부터 알아본다.
천천히 한줄 식 해석하면
x.open('GET', '?m=' +i, false)
?m=i라는 주소를 동기식 방식으로 불러온다. (true면 비동기, false면 동기)
x.send(null)
GET 방식으로 서버에 요청을 보낸다.
aview.innerHTML = x.responseText
aview id에 x에서 받은 응답 메세지를 넣어준다.
i++;
if(x.responseText) setTimeout("answer("+i+")",20);
만약 응답 메세지가 있으면 계속해서 answer함수를 불러오고
if(x.responseText=="") aview.innerHTML="?";
없으면 ?문자로 바꿔준다.
이렇게 보니 응답쪽에 관련이 있을것 같아 Network 페이지를 봐주었다.
m=0 부터 m=38까지 Response응답이 있는걸 확인할 수 있다.
그리고 이 응답들을 한번에 보기 위해서 아래와같이 코드를 수정하고 console창에 넣으면
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);
// ?으로 바꿔주는 코드는 원래 메세지들을 삭제시키기 때문에 삭제
}
setTimeout("answer(0)",1000);
플래그를 얻을 수 있다!
'Web Hacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr old-59번 풀이 (1) | 2023.11.26 |
---|---|
Webhacking.kr old-36 풀이 (0) | 2023.11.25 |
Webhacking.kr old-25 풀이 (php wrapper) (2) | 2023.11.21 |
[Webhacking.kr] old-18번 문제 풀이 (0) | 2023.08.13 |
[Webhacking.kr] old-16번 문제 풀이 (0) | 2023.05.06 |