
1. 문제 정보
- 문제 번호 : old -54
- 문제 점수 : 10점
2. 문제 분석

54번 문제에 들어가면 password is 뒤에 문자가 바뀌고 마지막에 ?로 바뀐다.
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);
XMLHttpRequest 객체를 생성하여 변수 x에 저장하고 setTimeout("answer(0)",1000);를 통해 answer를 호출한다.
aview.innerHTML = x.responseText; 부분에서 등호(=)를 사용하고 있기 때문에, 이전 글자가 누적되지 않고 새로운 글자로 계속 덮어쓰기 된다. 그래서 우리 눈에는 글자가 하나씩 지나가는 것처럼 보인다.
3. 풀이
aview.innerHTML=x.responseText; <- 이걸 +=로 바꾸고
if(x.responseText=="") aview.innerHTML="?";를 지우고 콘솔창에 입력하면 password가 나오고 auth로 입력하면 풀린다.
GET /challenge/bonus-4/ HTTP/1.1
Host: webhacking.kr
Cookie: PHPSESSID=h5jhp4l7gatm2eda96tjphvan7; REMOTE_ADDR=112277.12.0012.12.00.12.1
Cache-Control: max-age=0
Sec-Ch-Ua: "Not(A:Brand";v="8", "Chromium";v="144"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Accept-Language: ko-KR,ko;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Priority: u=0, i
Connection: keep-alive
X-Forwarded-For: 1.1.1.1

4. 요약
- 기존 자바스크립트가 innerHTML = 을 사용하여 글자를 덮어씌우는 바람에 전체 문자열을 볼 수 없었다.
- 브라우저 콘솔에서 연산자를 +=로 수정하여 글자가 누적되도록 함수를 재정의했다.
- 마지막에 ?로 초기화하는 부분까지 제거하여 온전한 Password 문자열을 획득했다.
'워게임 > webhacking.kr' 카테고리의 다른 글
| [webhacking.kr] old-18문제 (0) | 2026.01.22 |
|---|---|
| [webhacking.kr] old-26문제 (0) | 2026.01.22 |
| [webhacking.kr] old-24 문제 (0) | 2026.01.20 |
| [webhacking.kr] old-32 문제 (0) | 2026.01.20 |
| [webhacking.kr] old-14 문제 (0) | 2026.01.20 |