문제화면을 보면 문자들이 날아다닌다.
문제파일은 없으니 소스코드를 보도록 하자.
const img_files = ["/static/images/10.png", "/static/images/17.png", "/static/images/13.png", "/static/images/7.png","/static/images/16.png", "/static/images/8.png", "/static/images/14.png", "/static/images/2.png", "/static/images/9.png", "/static/images/5.png", "/static/images/11.png", "/static/images/6.png", "/static/images/12.png", "/static/images/3.png", "/static/images/0.png", "/static/images/19.png", "/static/images/4.png", "/static/images/15.png", "/static/images/18.png", "/static/images/1.png"];
var imgs = [];
for (var i = 0; i < img_files.length; i++){
imgs[i] = document.createElement('img');
imgs[i].src = img_files[i];
imgs[i].style.display = 'block';
imgs[i].style.width = '50px';
imgs[i].style.height = '50px';
document.getElementById('box').appendChild(imgs[i]);
}
const max_pos = self.innerWidth;
function anim(elem, pos, dis){
function move() {
pos += dis;
if (pos > max_pos) {
pos = 0;
}
elem.style.transform = `translateX(${pos}px)`;
requestAnimationFrame(move);
}
move();
}
for(var i = 0; i < 20; i++){
anim(imgs[i], 0, Math.random()*60+20);
}
이미지 안에 문자들이 담겨 있고 이미지에 대한 크기, 움직이게 하는 함수, 그것에 대한 애니메이션 효과를 반복문이 있다.
for(var i = 0; i < 20; i++){
anim(imgs[i], 0, Math.random()*60+20);
}
일단 정신 사나우니까 이미지를 움직이는 반복문 안에 있는 'anim' 함수를 조작하여 멈춰보자.
anim 함수는 'anim(elem, pos, dis)' 방식으로 사용하며 각 순서에 따라 [이동시킬 이미지, 이미지의 초기 위치, 이미지가 한 번에 이동하는 거리]를 정한다.
따라서 이동하는 거리가 'Math.random()*60+20' 식에 따른다는 것이다.
이 부분을 조작하면..
이렇게 움직이지 않게 만들 수 있다.
힌트에 따라서 플래그 값을 제출하면 문제가 풀린다.
'DreamHack > CTF' 카테고리의 다른 글
(CTF 출제)DreamHack - broken-png (0) | 2024.05.08 |
---|---|
(CTF 출제)DreamHack - funjs (1) | 2024.05.03 |
(CTF 출제)DreamHack - Easy Login (1) | 2024.05.01 |
(CTF 출제)DreamHack - Mango (0) | 2024.04.30 |
(CTF 출제)DreamHack - Carve Party (수정) (0) | 2024.04.05 |