완료됨
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