Password is 문자
이 형식으로 문자만 바뀜
flag를 한 글자씩 뱉는거 같음
<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>
소스코드
answer함수를 보면
GET방식으로 m파라미터에 i의 값을 넣고
그에 대한 응답에 text를 HTML로 표현(?)
i값을 증가시키고
문자가 나온다면 20초 후에 증가시킨 i를
재귀함수 answer에 다시 실행
answer(i)를 실행시켜 문자가 나오지 않으면
?만 띄움
콘솔로 answer함수를 살짝만 수정하면 됨
aview.innerHTML=x.responseText; -> aview.innerHTML+=x.responseText;
이렇게 하면 이전 문자가 지워지지 않고 계속 남아있을거임
if(x.responseText=="") aview.innerHTML="?";
이건 answer(i)에서 responeText가 없다면
답을 ?로만 띄우는거니 지우면 된다
function answer(i){
x.open('GET','?m='+i,false);
x.send(null);
aview.innerHTML+=x.responseText;
i++;
if(x.responseText) setTimeout("answer("+i+")",20);
}
코드 수정후 answer(0)으로 실행하면
'Wargame, CTF > webhacking.kr' 카테고리의 다른 글
Webhacking.kr 44번 (0) | 2020.01.28 |
---|---|
Webhacking.kr 43번 (0) | 2020.01.28 |
Webhacking.kr 41번 (0) | 2020.01.24 |
Webhacking.kr 39번 (0) | 2020.01.24 |
Webhacking.kr 36번 (0) | 2020.01.24 |