호그와트

호박부수기 (Dreamhack)

영웅*^%&$ 2021. 10. 13. 16:54
728x90

오랜만에 호박 부수기 게임에 들어가서 다시 진행시켜보았다

얼마 안 있어서 어떤 아이디어 하나를 얻을 수 있었는데

콘솔은 js로 움직인다는 사실이었다

js로 움직이기 때문에 html같은 걸 아무리 때려박아도 애가 소화를 못하는 것이었다

var pumpkin = [ 124, 112, 59, 73, 167, 100, 105, 75, 59, 23, 16, 181, 165, 104, 43, 49, 118, 71, 112, 169, 43, 53 ];

var counter = 0;

var pie = 10;

function make() {

if (0 < counter && counter <= 1000) {

$('#jack-nose').css('opacity', (counter) + '%');

}

else if (1000 < counter && counter <= 3000) {

$('#jack-left').css('opacity', (counter - 1000) / 2 + '%');

}

else if (3000 < counter && counter <= 5000) {

$('#jack-right').css('opacity', (counter - 3000) / 2 + '%');

}

else if (5000 < counter && counter <= 10000) {

$('#jack-mouth').css('opacity', (counter - 5000) / 5 + '%');

}

if (10000 < counter) {

$('#jack-target').addClass('tada');

var ctx = document.querySelector("canvas").getContext("2d"),

dashLen = 220, dashOffset = dashLen, speed = 20,

txt = pumpkin.map(x=>String.fromCharCode(x)).join(''), x = 30, i = 0;

ctx.font = "50px Comic Sans MS, cursive, TSCu_Comic, sans-serif";

ctx.lineWidth = 5; ctx.lineJoin = "round"; ctx.globalAlpha = 2/3;

ctx.strokeStyle = ctx.fillStyle = "#1f2f90";

(function loop() {

ctx.clearRect(x, 0, 60, 150);

ctx.setLineDash([dashLen - dashOffset, dashOffset - speed]); // create a long dash mask

dashOffset -= speed; // reduce dash length

ctx.strokeText(txt[i], x, 90); // stroke letter

if (dashOffset > 0) requestAnimationFrame(loop); // animate

else {

ctx.fillText(txt[i], x, 90); // fill final letter

dashOffset = dashLen; // prep next char

x += ctx.measureText(txt[i++]).width + ctx.lineWidth * Math.random();

ctx.setTransform(1, 0, 0, 1, 0, 3 * Math.random()); // random y-delta

ctx.rotate(Math.random() * 0.005); // random rotation

if (i < txt.length) requestAnimationFrame(loop);

}

})();

}

else {

$('#clicks').text(10000 - counter);

}

}

$(function() {

$('#jack-target').click(function () {

counter += 1;

if (counter <= 10000 && counter % 100 == 0) {

for (var i = 0; i < pumpkin.length; i++) {

pumpkin[i] ^= pie;

pie = ((pie ^ 0xff) + (i * 10)) & 0xff;

}

}

make();

});

});

코드를 보다 보니까 이 부분이 js라는 걸 알 수 있었다

원래 var pie 부분이 1로 되어있는데 위에 나온 것처럼 10만 해주어도 한 번 클릭에 2배수 효과를 발생시킨다

var pie = 1000; 으로 해주면 한 번에 세 번 클릭이 된다

이러한 문제에는 원래 여러 답변이 있을 수 있다

오토마우스나 노가다 방법도 답을 얻을 수 있는 방법이기도 하다 (브루트 포스도 공격이기는 하니까)

for(i=0;i<10001;i++){

$('#jack-target').click()

}

알려진 가장 간단한 방법은 이것이다.

콘솔에 이걸 치면 target click을 통해서 단박에 정답을 얻을 수 있다

> S.fn.init [svg#jack-target.tada]

728x90

'호그와트' 카테고리의 다른 글

재밌는 ssrf(Dreamhack)  (0) 2021.10.16
proxy(Dreamhack)  (0) 2021.10.13
php-1(Dreamhack)  (0) 2021.10.11
초코샵 냠냠 (Dreamhack)  (0) 2021.10.11
file-csp (Dreamhack)  (0) 2021.10.11