저장소
[webhacking.kr] 54번 풀이 본문
Webhacking.kr
Index Welcome Stranger! Chatting Notice(en) [2021-04-16] Score of old challenges has been adjusted to 1/10. For a while now, new challenges will be added "without" notice. [2020-08-12] Replace chat feature with Discord. Please do not cause inconvenience to
webhacking.kr

54번 문제를 처음 들어가면 ?의 자리가 다양한 문자로 바뀐다.
일정 시간이 지나면 ?로 고정된다.

크롬 기준 단축키 F12를 사용하여 소스코드를 확인했다.
<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;
}
}
// run()의 결과를 변수 x에 저장함
x=run();
function answer(i){
x.open('GET','?m='+i,false); // GET 방식으로 ?m=i으로 페이지를 오픈
x.send(null); // GET 방식으로 오픈한 것을 보냄
aview.innerHTML=x.responseText; // aview를 업데이트함
i++;
if(x.responseText) setTimeout("answer("+i+")",20);
if(x.responseText=="") aview.innerHTML+="?"; // x.responseText 값이 없다면 ?
}
setTimeout("answer(0)",1000); // setTimeout([Func], [Milli]) 0.00n초 후 함수 실행
</script>
</body>
</html>

aview.innerHTML를 x.responseText의 값으로 새롭게 갱신하는 것이 아닌 해당 값이 누적하도록 했다.
또한 마지막에 x.responseText가 ""이 되어버리면 aview.innerHTML이 ?가 되므로 주석 처리해주었다.

수정된 소스코드를 저장 후 페이지를 새로고침하면 FLAG 값이 출력된다.

해당 FLAG 값을 복사해 Auth에 제출하면 아래와 같이 문제 풀이 성공 화면이 출력된다.

Chrome 페이지 소스코드 수정 후 반영하는 법
- Sources-Overrides-Select folder for overrides-로컬 폴더 경로 지정-액세스 허용
- Sources-Page-원하는 파일 Save for overrides로 저장
- Sources-Page or Overrides에서 편집 후 Ctrl+S 및 새로고침으로 반영
'IT > 웹 해킹' 카테고리의 다른 글
[webhacking.kr] 35번 풀이 (0) | 2021.08.20 |
---|---|
[webhacking.kr] 3번 풀이 (0) | 2021.08.20 |
[webhacking.kr] 34번 풀이 (0) | 2021.08.12 |
[webhacking.kr] 17번 풀이 (0) | 2021.08.09 |
[webhacking.kr] 16번 풀이 (0) | 2021.08.09 |