웹 서비스에 접속하면 수많은 팝업창이 한꺼번에 뜨는 혼란스러운 화면을 마주하게 됩니다. 광고, 스팸, 잡다한 메시지가 난립해 사용자를 방해하는 화면입니다.

팝업들을 닫다 보니 드디어 핵심 안내문을 확인할 수 있었습니다. 단순히 광고를 없애는 것이 아니라 광고 엔진 자체를 멈추는 것이 문제 해결의 포인트임을 알 수 있습니다.

이 코드는 웹 서비스에서 계속 실행되는 하트비트(Heartbeat) 요청을 강제로 멈추는 스크립트입니다.
(()=>{
const last = setInterval(()=>{},1000); // 1초마다 동작하는 setInterval 등록
for(let i=1;i<=last;i++) clearInterval(i); // 지금까지 등록된 모든 Interval ID를 순회하며 제거
console.log('HB stopped up to', last); // 마지막으로 제거한 ID를 출력
})();
동작 원리
- setInterval(()=>{},1000)
→ 실제 실행할 동작은 없지만, 새로 1초 주기의 타이머를 하나 생성합니다.
→ 브라우저는 이 타이머에 고유한 ID(last) 를 부여합니다. - for (let i=1; i<=last; i++) clearInterval(i);
→ 1부터 마지막 ID까지 전부 clearInterval 실행.
→ 결과적으로 지금까지 등록된 모든 setInterval 타이머가 정리(중단) 됩니다. - console.log(...)
→ "여기까지의 HeartBeat(HB) 인터벌을 모두 멈췄다"는 로그를 찍습니다.
모든 setInterval을 제거하는 스크립트를 실행하여 하트비트 요청을 멈춘 뒤, 화면 중앙에 있던 [I escaped the ads — claim flag] 버튼을 클릭했습니다. 그 결과 정상적으로 플래그를 획득할 수 있었습니다.


'Dreamhack > 웹해킹' 카테고리의 다른 글
| [LEVEL 1] simple_sqli (0) | 2025.09.02 |
|---|---|
| [LEVEL 1] proxy-1 (1) | 2025.08.31 |
| [🌱Beginner] php7cmp4re (0) | 2025.08.27 |
| [🌱Beginner] phpreg (0) | 2025.08.27 |
| [🌱Beginner] Flying Chars (0) | 2025.08.25 |