(CTF 출제)DreamHack - Carve Party (수정)

2024. 4. 5. 14:44·CTF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

호박을 클릭하면 숫자가 줄어든다.

 

9999번 클릭하면 되는 게임인 거 같다.

 

는 무슨 코드를 봐보자.

 

 

 

 

 

 

 

 

 

<script>
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 = 1;

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();
  });
});
</script>

 

'pumpkin' 의 배열선언 124,112,59 ~ 

'counter'이 변수는 몇 번 클릭했는지를 나타내는 거 같다.

 

함수 make 에서는 클릭 횟수에 따라 투명도를 조절하는 코드인 거 같다.

 

if(10000 < counter) 

클릭횟수가 10000보다 클 경우에 글자 애니메이션이 나온다고 한다.

 

그다음은 'function()'인데 이 부분이 중요한 거 같다.

$('#jack-target'). click( ~  호박을 클릭하면 counter 가 1씩 증가한다,

 

 

 

 

 

 

 

 

 

 

여기서 "counter" 를 조작해 버리면

 

 

 

이상한 문자열이 나온다.

 

아마 실제 클릭 횟수를 따지기 때문에 그런 거 같다.

 

그러면 Console에서 반복문을 써서 클릭시켜보자.

 

 

 

 

 

 

 

 

반복문 실행..

 

 

 

 

정상적으로 호박이 만들어지고 플래그가 출력하게 된다.

'CTF' 카테고리의 다른 글

(CTF 출제)DreamHack - Easy Login  (1) 2024.05.01
(CTF 출제)DreamHack - Mango  (0) 2024.04.30
(CTF 출제)DreamHack - PHPreg (수정)  (0) 2024.04.05
(CTF 출제)DreamHack - ex-reg-ex (수정)  (0) 2024.04.05
(CTF 출제)dreamhack - Baby Linux (수정)  (0) 2024.04.05
'CTF' 카테고리의 다른 글
  • (CTF 출제)DreamHack - Easy Login
  • (CTF 출제)DreamHack - Mango
  • (CTF 출제)DreamHack - PHPreg (수정)
  • (CTF 출제)DreamHack - ex-reg-ex (수정)
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • 모의해킹 (18)
      • CTF (22)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
      • Mobile_security (13)
        • Drozer_Android (4)
        • Frida_Android (1)
        • IOS (1)
        • tool (1)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    php wrapper
    insecurebankv2
    cookies
    모의해킹
    lfi
    Android
    bandit17
    워게임
    webhacking.kr
    webhacking
    wargame
    CTF
    bandit20
    정보보안기사
    리눅스 워게임
    overthewire
    bandit
    drozer
    Linux
    난독화
    sql injection
    Linux wargame
    bandit18
    bandit30
    url encode
    Dreamhack
    php
    OSINT
    리눅스
    Frida
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
(CTF 출제)DreamHack - Carve Party (수정)
상단으로

티스토리툴바