carve party 질문

안녕하세요. console에서 코드를 조작해서 풀었는데 플래그가 다음과 같이 나옵니다.
image.png

순차적으로 click을 하는 코드로 변경했을 때는 플래그가 정상적으로 나오는데
아래와 같이 counter를 한번에 만번으로 조작하는 코드를 짰을 때 위와 같은 문제가 발생합니다.

혹시 이유를 알 수 있을까요? 아니면 오류일까요?

$(function() {
  $('#jack-target').click(function () {
    counter += 10000;
    if (counter <= 10000 && counter % 100 == 0) {
      for (var i = 0; i < pumpkin.length; i++) {
        pumpkin[i] ^= pie;
        pie = ((pie ^ 0xff) + (i * 10)) & 0xff;
      }
    }
    make();
  });
});
#web
작성자 정보
답변 1
Mel.Kim
대표 업적 없음
if (counter <= 10000 && counter % 100 == 0) {
      for (var i = 0; i < pumpkin.length; i++) {
        pumpkin[i] ^= pie;
        pie = ((pie ^ 0xff) + (i * 10)) & 0xff;
      }
    }

상기 코드의 조건문을 보시면 counter가 10,000보다 작거나 같고, 100의 배수인 경우
pumpkin배열의 각 엘리먼트 및 변수 pie에 xor 연산을 취하고 있습니다.
코드를 수정하지않고 정말 클릭을 만 번 하게 되면, pumpkin배열 엘리먼트 및 변수pie xor 연산도 100번 이루어지고
그 결과로 나오는 값이 DH{...} 플래그가 되기 때문에 해당과정(100번의 xor 과정)을 생략 할 수는 없다고 보시면 될 것 같습니다.

counter를 바로 10000으로 설정해버리면, xor연산은 1번밖에 이루어지지 않기 때문에
flag 영역이 알아볼 수 없는 형태로 출력되는 것입니다.

2022.11.11. 08:52
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기